java - 在java中读取unicode字符

标签 java file unicode

我对 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/

相关文章:

mysql - 使用 pentaho unicode 问题从 SQL Server 迁移到 MySQL

java - 非法状态异常 : Can not perform this action after onSaveInstanceState with onActivityResult

java - 在 Java 中获取特定时间段后的日期

visual-studio-2008 - Visual Studio 2008 项目引用

python - 为什么 'é'和 'é'编码成不同的字节?

javascript - 这个 JavaScript 代码片段似乎没有去除 JavaScript 中的 Unicode 转义字符 - 为什么?

java - 带循环的增量计数器

java - 部分线程安全是否使 Java 类线程安全?

java - 不区分大小写的路径 startsWIth endsWith

c - 文件交错、文件扫描、文件打印