A \N{LATIN SMALL LETTER E WITH ACUTE} character is code point U+00E9.
In UTF-8, that is \xC3\xA9.
But if you turn around and treat those two bytes as distinct code
points U+00C3 and U+00A9, those are \N{LATIN CAPITAL LETTER A WITH
TILDE} and \N{COPYRIGHT SIGN}, respectively.
# 1 楼答案
您正面临编码问题
任何字符串实际上都是一组位。为了使它们可读,我们使用位组到可以读取的字符表示的映射。这些“映射”表示所谓的编码
您遇到的问题是,您正在读取使用一个“映射”编码的位,并使用另一个“映射”显示它
确保使用相同的编码,并始终检查字符串操纵函数是否与所使用的编码一起工作。这是正确使用应用程序的基础
# 2 楼答案
当您没有以正确的编码格式(可能是UTF-8)解码文本时,通常会发生这种情况
如果您想要更精确的答案,请将您的代码发布给我们,以便我们可以尝试更正它
# 3 楼答案
我已经使用下面的代码将
é
java unicode打印到文件中,该文件正在工作# 4 楼答案
启动应用程序时,set the encoding to utf-8:
注意,正如上面链接中提到的,许多Java类缓存编码;因此,如果在运行时更改编码,它可能不会影响我们关心的所有类
将解释从his answer中的tchrist复制到another question:
# 5 楼答案
代码显示的是正确的位-错误的是,您用来查看这些位的东西被告知这些位的编码与实际编码不同
这不是Java的问题。无论您使用什么软件来查看Java输出,这都是一个问题。例如,您的终端编码可能设置为ISO-8859-15,而不是Java发出的UTF-8
为外部世界提供一个全UTF-8工作流和一个抽象Unicode代码点的内部世界确实很有帮助
我想你可能误读了一些输入,UTF-8中的输入,但是你误读了一些传统的8位编码。但我最好的猜测是已经给出的,即您的显示设备/程序的编码设置错误