Я только что узнал, что Android может правильно прочитать файл, который закодирован с использованием Windows ANSI (или так называемое многобайтовое кодирование), и преобразовать его в строки Java Unicode. Но происходит сбой при чтении файла Unicode. Похоже, что Android читает его побайтово. Строка Unicode «ABC» в файле будет считана в строку Java длиной 6, а символы будут 0x41, 0x00, 0x42, 0x00, 0x43, 0x00.
BufferedReader in = new BufferedReader(new FileReader(pathname));
String str = in.readLine();
Пожалуйста, есть ли способ правильно читать файлы Unicode Windows на Android? Спасибо.
[Изменено]
Эксперименты: я сохранил два китайских иероглифа "難 two" в двух текстовых файлах 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) не может правильно декодировать китайские иероглифы. Итак, как мне это сделать? Заранее спасибо.