我剛剛發現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