Android: Как прочитать текстовый файл, который содержит китайские иероглифы? - PullRequest
1 голос
/ 01 июня 2010

У меня есть текстовый файл, который содержит много китайских символов, а текстовый файл находится в каталоге res / raw / test.txt. Я хочу прочитать файл, но почему-то не могу правильно отобразить китайские иероглифы. Вот мой код:

try {
    InputStream inputstream = getResources().openRawResource(R.raw.test);
    BufferedReader bReader = new BufferedReader(
        new InputStreamReader(inputstream,Charset.forName("UTF-8")));
    String line = null;
    while ((line= bReader.readLine())!= null) {
        Log.i("lolo", line);
        System.out.println("here is some chinese character 这是一些中文字");
    }
} catch (IOException e) {
    e.printStackTrace();
}

Оба Log.i ("lolo", строка); и System.out.println («здесь некоторые китайские символы character 这 一是 中 文字») неправильно отображают символы, я даже не вижу китайские символы в методе println (). Что я могу сделать, чтобы решить эту проблему? Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 01 июня 2010

Чтобы правильно обрабатывать не-ASCII-символы, такие как многобайтовые символы UTF-8, важно понимать, как эти символы кодируются и отображаются.

Ваша консоль (экран вывода) может не поддерживать отображение символов, отличных от ASCII. Если это так, ваши символы UTF-8 будут отображаться как мусор. Иногда вы сможете изменить кодировку символов на консоли. Иногда нет.

Даже если консоль правильно отображала символы UTF-8, возможно, ваша строка неправильно хранит китайские символы. Вы можете подумать, что это правильно, потому что ваш редактор отображает их, но убедитесь, что кодировка символов вашего редактора также поддерживает UTF-8.

1 голос
/ 20 мая 2011

Я тоже пытался это выяснить. Сначала вам нужно открыть файл .txt с помощью блокнота, а затем нажать File -> Save as, там вы увидите выпадающее меню с надписью Enconding, поэтому измените его на UTF-8. После сохранения файла вы должны удалить расширение .txt к файлу, а затем добавить файл в путь res / raw и затем вы можете ссылаться на него из кода как R.raw.txtFileName.

Вот и все, я положу свой код, где я использовал китайские символы, и я мог бы показать их в эмуляторе.

Если у вас есть еще вопросы, дайте мне знать, потому что я также разрабатываю что-то связанное с персонажами. Вот код:

public List<String> getWords() {

    List<String> contents = new ArrayList<String>();
    try {
        InputStream inputStream = getResources().openRawResource(R.raw.chardb);
        BufferedReader input =  new BufferedReader(new InputStreamReader(inputStream,Charset.forName("UTF-8")));
        try {
            String line = null;
            while (( line = input.readLine()) != null){
                contents.add(line);
            }
          }
        finally {
        input.close();
        }
    }
    catch (IOException ex){
      ex.printStackTrace();
    }

    return contents;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...