我刚刚发现Android可以正确读取使用Windows ANSI(或所谓的多字节编码)编码的文件并将其转换为Java Unicode字符串。但读取Unicode文件时失败。看来,Android正在逐字节地阅读它。文件中的Unicode字符串“ABC”将被读入长度为6的Java字符串,字符为0x41,0x00,0x42,0x00,0x43,0x00。在Android上阅读Windows Unicode文件
BufferedReader in = new BufferedReader(new FileReader(pathname));
String str = in.readLine();
请问,有没有办法在Android上正确读取Windows Unicode文件?谢谢。
[编辑]
Experiements:我在两个Windows文本文件保存两个中国字 “难哪”:
ANSI.txt -- C3 F8 AD FE
UNICODE.txt -- FF FE E3 96 EA 54
然后我把这些文件到模拟器的SD卡,和我用下面的程序来读取它们:(注意仿真器的语言环境已经设置为zh_TW)。
BufferedReader in = new BufferedReader(new FileReader("/sdcard/ANSI.txt"));
String szLine = in.readLine();
int n = szLine.length(), j, i;
in.close();
for (i = 0; i < n; i++)
j = szLine.charAt(i);
这是我所看到的在模拟器上:
ANSI.txt -- FFFD FFFD FFFD
UNICODE.txt -- FFFD FFFD FFFD FFFD 0084
Apparantly的Android(或Java)不能正确解码中国汉字。那么,我该怎么做?先谢谢你。
谢谢,InputStreamReader正是我正在寻找的。非常感谢。 – wwyt