2

我编写了一个包含以下内容的文本文件:\u0032\u0142o\u017Cy\u0142

然后我使用 FileReader 和 BufferedReader 来读取文件。

public static void main(String[] args) throws Exception{
   FileInputStream fr = new FileInputStream("README.TXT");
   BufferedReader br = new BufferedReader(new InputStreamReader(fr,"UTF-8"));
   String s="";
   while((s=br.readLine())!=null){
      System.out.println(s);
    }
}

但输出是:\u0032\u0142o\u017Cy\u0142.

当我使用

System.out.println("\u0032\u0142o\u017Cy\u0142");

这些代码将被解析并以正确的形式显示。

如何更改我的代码,以便文件中的 unicode 也将被解析并以正确的形式显示?

4

3 回答 3

3

您想使用sun.tools.native2ascii对文本进行反向转换。

new sun.tools.native2ascii.Main().convert(new String[]{"-reverse", new File("README.TXT"), convertedFile});

所以像这样的事情会做到这一点。

public static void main(String[] args) throws Exception{
   File convertedFile = new File("converted.txt");
   new sun.tools.native2ascii.Main().convert(new String[]{"-reverse", new File("README.TXT"), convertedFile});
   FileInputStream fr = new FileInputStream(convertedFile);
   BufferedReader br = new BufferedReader(new InputStreamReader(fr,"UTF-8"));
   String s="";
   while((s=br.readLine())!=null){
      System.out.println(s);
    }
}
于 2011-05-16T12:58:24.063 回答
1

您可以使用此处发布的源代码进行转义。

于 2011-05-16T13:03:15.833 回答
0

unicode 转义序列的解析不是 Java 标准 API 的显式部分,它仅在加载时隐式发生Properties。您可以从Properties.

但最好为您的文件使用像 UTF-8 这样的普通编码。

于 2011-05-16T12:59:29.080 回答