java修复了字符串中的混合编码
我有一个包含以下字符串的文件:
AAdοbe Dοcument Clοud
如果在记事本++中查看。在十六进制视图中,字符串如下所示:
如果我用Java读取文件,字符串如下所示:
AAdοbe Dοcument Clοud
如何在Java中获得与Notepad++相同的编码
你可以在下面搜索框中键入要查询的问题!
我有一个包含以下字符串的文件:
AAdοbe Dοcument Clοud
如果在记事本++中查看。在十六进制视图中,字符串如下所示:
如果我用Java读取文件,字符串如下所示:
AAdοbe Dοcument Clοud
如何在Java中获得与Notepad++相同的编码
# 1 楼答案
您必须使用与文件相同的编码读取java文件
如果您正在使用非标准编码,甚至尝试使用以下内容读取编码:
可能会输出错误的值
几乎没有一个库可以更好地处理编码识别:https://code.google.com/archive/p/juniversalchardet/
它在获得正确编码方面也有一些漏洞,但我已经使用了它
在使用它时,我发现大多数非标准编码都可以用UTF-16读取,比如:
从一段时间以来,Java支持使用UTF-16编码。它在Java标准API中定义为
StandardCharsets.UTF_16
。该字符集包含许多特定于语言的字符和表情符号# 2 楼答案
您的文件编码为UTF-8,
CE BF
字节是字符ο
('GREEK SMALL LETTER OMICRON' (U+03BF))的UTF-8编码如果使用记事本++中的
Encoding
下拉菜单指定UTF-8,则应看到以下内容:你可能想用普通的拉丁字母o('LATIN SMALL LETTER O' (U+006F))来代替希腊字母
如果决定保留希腊文ο,则需要确保Java程序使用UTF-8读取文件,最好使用以下其中一种方法:
如果您使用调试器查看文本,您应该看到它现在已被正确读取。如果打印文本,请确保正在使用的控制台窗口可以处理UTF-8字符,否则即使正确读取,也可能打印错误
# 3 楼答案
您必须在此文件读取器中设置编码