Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA::垃圾字符编码_Java_Unicode_Character Encoding - Fatal编程技术网

JAVA::垃圾字符编码

JAVA::垃圾字符编码,java,unicode,character-encoding,Java,Unicode,Character Encoding,我从web上得到了一个乱码字符串(“a································································· s = new String(str.getBytes("ISO-8859-1"), "UTF-8"); 它显示了很少的印地语字符,但不是全部。它显示了像这样奇怪的字符� 还有 请帮我解决这个问题 新字符串(str.getBytes(“ISO-8859-1”),“UTF-8”) 这是试图恢复一个字符串,该字符

我从web上得到了一个乱码字符串(“a·································································

         s = new String(str.getBytes("ISO-8859-1"), "UTF-8");
它显示了很少的印地语字符,但不是全部。它显示了像这样奇怪的字符� 还有

请帮我解决这个问题

新字符串(str.getBytes(“ISO-8859-1”),“UTF-8”)

这是试图恢复一个字符串,该字符串在实际为UTF-8时被错误解码为ISO-8859-1

但是,如果您谈论的是网页,那么您可能没有ISO-8859-1,您可能有Windows代码页1252,这是一种类似于ISO-8859-1的编码,但在字节范围0x80–0x9F中有不同的字符。如果您将上述代码中的
ISO-8859-1
替换为
Windows-1252
,您的示例文本如下:

किसानों के ल�
这似乎更接近正确(只是被截断)


但一般来说,应避免尝试恢复误码字符串。对于许多编码组合,误码可能会导致无法恢复的损坏。最好首先使用正确的编码从原始字节解码字符串。如何执行此操作取决于从何处获取
str

您可以对web.xml中的tomcat过滤器编码和server.xml中的连接器修改进行一些更改,而不是转换乱码字符串。以下是条目。这将更改tomcat级别的字符编码,您将获得通过javascript传递的确切字符

web.xml

encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true

encodingFilter/*
什么是
str
?您从web上得到的乱码字符串应该是字节,您可以将其转换为具有正确编码的字符串。您是否尝试过其他编码?您可以在循环中尝试所有编码,以查看哪种编码似乎正确。垃圾字符?调用
System.gc()
然后再试一次。嗨,彼得,我不知道如何检查所有的编码?我对Java不太了解。你能给我一些建议吗?我检查了所有的编码,看起来没有任何东西工作正常。我从google feed api获取str。我对google feed api进行了$.ajax调用,它成功地向我发送了数据,但数据没有正确所有的角色都像(“a•a•a•a•184•a•a•èèa•a•252; a•èa”)。我想把它转换成印地语,因为它应该是。嗨,波宾斯-我尝试了你的建议,看起来似乎没有更多的印地语字符出现,但仍然有一些垃圾字符(�) 仍然存在。还有什么进一步的建议吗?取决于
str
最初是如何解码的,它可能会被无可挽回地损坏。你需要回去看看
str
是如何收集的,因为真正的修复应该在那里完成。bobince-就像我说的数据来自google feed api,没有任何帮助查看google api resultset format.OK这是google RSS api中的一个错误:当它获取的提要的内容类型为
text/xml
(没有
charset=
)时,它猜测的是(错误的)编码,而实际上XML的默认编码应该是UTF-8。您可以通过直接浏览来查看此问题。Google需要解决此问题。