Java 修复字符串中的混合编码
我有一个包含以下字符串的文件:Java 修复字符串中的混合编码,java,character-encoding,Java,Character Encoding,我有一个包含以下字符串的文件: AAdοbe Dοcument Clοud 如果在记事本++中查看。在十六进制视图中,字符串如下所示: AAdοbe Dοcument Clοud 如果我用Java读取文件,字符串如下所示: AAdοbe Dοcument Clοud 如何在Java中获得与Notepad++相同的编码?您必须在文件读取器中设置编码 new FileReader(fileName, StandardCharsets.UTF_8) 您必须在此文件读取器中设置编码
AAdοbe Dοcument Clοud
如果在记事本++中查看。在十六进制视图中,字符串如下所示:
AAdοbe Dοcument Clοud
如果我用Java读取文件,字符串如下所示:
AAdοbe Dοcument Clοud
如何在Java中获得与Notepad++相同的编码?您必须在文件读取器中设置编码
new FileReader(fileName, StandardCharsets.UTF_8)
您必须在此文件读取器中设置编码
new FileReader(fileName, StandardCharsets.UTF_8)
您必须使用与文件相同的编码读取java文件 如果您正在使用非标准编码,甚至尝试使用以下内容读取编码:
InputStreamReader r = new InputStreamReader(new FileInputStream(theFile));
r.getEncoding()
可能会输出错误的值
很少有库能够更好地处理编码识别:它在获得正确编码方面也有一些漏洞,但我已经使用过了。
在使用它时,我发现大多数非标准编码都可以用UTF-16读取,比如:
new FileReader(fileName, StandardCharsets.UTF_16)
从一段时间以来,Java支持使用UTF-16编码。它在Java标准API中定义为
StandardCharsets.UTF_16
。该字符集包含许多特定于语言的字符和表情符号 您必须使用与文件相同的编码读取java文件
如果您正在使用非标准编码,甚至尝试使用以下内容读取编码:
InputStreamReader r = new InputStreamReader(new FileInputStream(theFile));
r.getEncoding()
可能会输出错误的值
很少有库能够更好地处理编码识别:它在获得正确编码方面也有一些漏洞,但我已经使用过了。
在使用它时,我发现大多数非标准编码都可以用UTF-16读取,比如:
new FileReader(fileName, StandardCharsets.UTF_16)
从一段时间以来,Java支持使用UTF-16编码。它在Java标准API中定义为
StandardCharsets.UTF_16
。该字符集包含许多特定于语言的字符和表情符号 您的文件编码为UTF-8,CE BF
字节是字符ο
()的UTF-8编码
如果使用记事本++中的编码
下拉菜单指定UTF-8,则应看到以下内容:
AAdοbe Dοcοud文件
你可能想用普通的拉丁字母o()来代替希腊字母
如果决定保留希腊文ο,则需要确保Java程序使用UTF-8读取文件,最好使用以下其中一种方法:
BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt")); // UTF-8 is the default
BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"), StandardCharsets.UTF_8);
如果您使用调试器查看文本,您应该看到它现在已被正确读取。如果打印文本,请确保您使用的控制台窗口可以处理UTF-8字符,否则即使读取正确,也可能打印错误。您的文件编码为UTF-8,
CE BF
字节是字符的UTF-8编码ο
()
如果使用记事本++中的编码
下拉菜单指定UTF-8,则应看到以下内容:
AAdοbe Dοcοud文件
你可能想用普通的拉丁字母o()来代替希腊字母
如果决定保留希腊文ο,则需要确保Java程序使用UTF-8读取文件,最好使用以下其中一种方法:
BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt")); // UTF-8 is the default
BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"), StandardCharsets.UTF_8);
如果您使用调试器查看文本,您应该看到它现在已被正确读取。如果打印文本,请确保您使用的控制台窗口可以处理UTF-8字符,否则即使正确读取,也可能打印错误。您如何在Java中读取文本?您如何在Java中读取文本?我尝试了此方法,但没有帮助,还有AAdÎÎbe DÎcÎDÎcÎDÎcÎDÎDÎcÎDÎDÎcÎDÎDÎcÎDÎDÎDÎcÎDÎDÎDÎDÎcÎD。