我写了一个包含以下内容的文本文件:\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并以正确的形式显示?
答案 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这样的普通编码。