相关疑难解决方法(0)

猜测Java中表示为byte []的文本编码

给定一个字节数组表示某些未知编码中的文本(通常是UTF-8或ISO-8859-1,但不一定如此),获得最可能使用的编码(在Java中)的最佳方法是什么?

值得注意:

  • 没有其他元数据可用.字节数组实际上是唯一可用的输入.
  • 检测算法显然不是100%正确.如果算法在80%以上的情况下是正确的,那就足够了.

java encoding utf-8 character-encoding

35
推荐指数
2
解决办法
2万
查看次数

在Tomcat上处理URI中的字符编码

在我试图帮助的网站上,用户可以在浏览器中输入一个URL,如下面的汉字,

  http://localhost:8080?a=??
Run Code Online (Sandbox Code Playgroud)

在服务器上,我们得到

  GET /a=%E6%B5%8B%E8%AF%95 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

如您所见,它是UTF-8编码,然后是URL编码.我们可以通过在Tomcat中将编码设置为UTF-8来正确处理.

但是,有时我们在某些浏览器上获得Latin1编码,

  http://localhost:8080?a=ß
Run Code Online (Sandbox Code Playgroud)

变成

  GET /a=%DF HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

无论如何在Tomcat中正确处理这个问题?看起来服务器必须做一些智能猜测.我们不希望100%正确处理Latin1,但是假设一切都是UTF-8,那么任何东西都比我们现在做的要好.

服务器是Tomcat 5.5.支持的浏览器是iPhone 6 +,Firefox 2+和iPhone上的Safari.

java encoding tomcat servlets internationalization

12
推荐指数
1
解决办法
1万
查看次数

举一个在regex java中使用cyirillic的例子

如何制作一个cyrillic字符串的正则表达式,我想以某种方式使用它:

String.replaceAll("?????????","")

当然它不起作用.我该怎么办才能让它发挥作用?

好的,我看到该方法有效,但它对我不起作用.我如何检查,为什么方法不执行?

...

嗯,我试着使用s1 = s1.replaceAll("[\\p{InCyrillic}]", "");我通过套接字的字符串.它的效果很好,所有的西里尔字母都消失了,包括这个词"???????",但是如果我尝试 s1=s1.replaceAll("???????","")什么也没发生.

但是s1=s1.replaceAll("???????","")对于在此程序中定义的静态字符串,方法在同一程序中工作.我想这个问题可能是因为错误的字符集,但我仍然无法理解我做错了什么.字符串的字符集是windows-1251.我尝试在程序中使用charset进行实验(现在是jsp),使用方法

System.setProperty("file.encoding", "windows-1251");
response.setCharacterEncoding("windows-1251"); 
Run Code Online (Sandbox Code Playgroud)

尝试将字符串从一个字符集转换为另一个字符集.没有任何改变

java regex string

5
推荐指数
2
解决办法
1466
查看次数