如何解析从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这样的普通编码会更好。