我对 java 有点陌生,当我将一个 unicode 字符串分配给
String str = "\u0142o\u017Cy\u0142";
System.out.println(str);
final StringBuilder stringBuilder = new StringBuilder();
InputStream inStream = new FileInputStream("C:/a.txt");
final InputStreamReader streamReader = new InputStreamReader(inStream, "UTF-8");
final BufferedReader bufferedReader = new BufferedReader(streamReader);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
stringBuilder.append(line);
}
为什么两种情况下的结果不同文件 a.txt 也包含相同的字符串。但是当我打印文件的输出时,它打印 z\u0142o\u017Cy\u0142
而不是实际的 unicode 字符。如果我想在打印字符串时也打印内容,我该怎么做。
最佳答案
你的代码应该是正确的,但我猜文件“a.txt”不包含用UTF-8编码的Unicode字符,而是转义字符串“\u0142o\u017Cy\u0142”。
请使用支持 UTF-8 的编辑器(例如 Windows 上最新版本的记事本或 Notepad++)检查文本文件是否正确。或者使用您最喜欢的十六进制编辑器对其进行编辑 - 它不应包含反斜杠。
我尝试使用“€”作为文件的 UTF-8 编码内容,结果打印正确。请注意,并非所有 Unicode 字符都可以打印,这取决于您的终端编码(在 Windows 上确实很麻烦)和字体。
关于java - 在java中读取unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630609/