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

时间:2011-05-16 12:47:12

标签: java unicode utf-8 text-files fileinputstream

我写了一个包含以下内容的文本文件:\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并以正确的形式显示?

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

答案 2 :(得分:0)

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

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