如何解析从java中的文件读取的unicode

我写了一个包含以下内容的文本文件: \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"); 

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

如何更改我的代码,以便解析文件中的unicode并以正确的forms显示?

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

您想使用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); } } 

unicode转义序列的解析不是Java Standard API的明确部分,它只在加载Properties时隐式发生。 您可以从Properties的源代码中复制实现。

但是对于你的文件使用像UTF-8这样的普通编码会更好。