Java - é变成Ã - - 如何修复它

时间:2013-04-25 07:10:52

标签: java unicode character-encoding

我有一个法语文件夹树。当我正在阅读它的文件夹/文件时,它会返回é而不是é。我替换了角色,但这不是一个好的解决方案。我怎样才能解决这个问题 ? 我在谷歌上找到了一些答案,但它对我没有帮助。

谢谢!

5 个答案:

答案 0 :(得分:3)

启动应用程序时,set the encoding to utf-8

java -Dfile.encoding="UTF-8" YourMainClass

请注意,如上面的链接所述,许多Java类缓存编码;因此,如果您在运行时更改编码,它可能不会影响我们所关注的所有类。

tchrist中的his answer的解释复制到another question

  

\N{LATIN SMALL LETTER E WITH ACUTE}个字符是代码点U+00E9。   在UTF-8中,即\xC3\xA9

     

但是,如果你转过身来将这两个字节视为不同的代码   分U+00C3U+00A9分别为\N{LATIN CAPITAL LETTER A WITH TILDE}\N{COPYRIGHT SIGN}

答案 1 :(得分:2)

您正面临编码问题。

任何字符串实际上都是一组位。为了使它们可读,我们使用位组的映射到我们可以读取的字符表示。那些“地图”代表所谓的编码。

您遇到的问题是因为您阅读使用一个“地图”编码的位并使用另一个“地图”显示它。

请务必使用相同的编码,并始终检查字符串操作函数是否与正在使用的编码一起使用。它是您正确使用应用程序的基础。

答案 2 :(得分:0)

这通常会在您没有以正确的编码格式(可能是UTF-8)解码文本时发生。

如果您想要更准确的答案,请将您的代码发给我们,以便我们尝试纠正它。

答案 3 :(得分:0)

代码显示正确的位 - 错误的是你用来查看这些位的东西被告知这些位的编码与实际不同。

这不是Java问题。无论您使用什么软件查看Java输出,这都是一个问题。例如,您的终端编码可能设置为ISO-8859-15而不是Java正在发出的UTF-8。

为外部世界提供全UTF-8工作流程以及抽象Unicode代码点的内部世界确实很有帮助。

我想你可能误读了一些输入,输入是UTF-8,但你误读的是一些传统的8位编码。但我最好的猜测是已经给出的,你的显示设备/程序的编码是错误的。

答案 4 :(得分:0)

我使用下面的代码打印é java unicode to file is working

writer1 = new FileWriter(outputFile, true);
writer2 = new BufferedWriter(writer1);
String str = new String(stringBuffer.toString().getBytes(), **"ISO-8859-1"**);
writer2.write(str);
writer1.flush();
writer2.flush();