читать юникод * .txt файлы?

1

В настоящее время я читаю файлы.txt с

    FileInputStream is = new FileInputStream(masterPath+txt);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));

    String readLine = null;

        while ((readLine = br.readLine()) != null) 
        {
        ...

Но символы Unicode не отображаются так, как должны.

Любые идеи о том, как изменить приведенный выше код, для работы unicode?

Благодарю!

  • 0
    Кроме того, Unicode не является кодировкой.
Теги:

3 ответа

6
Лучший ответ

Да. Укажите подходящую кодировку при построении InputStreamReader. Если ваш файл закодирован в кодировке UTF-8, используйте

new BufferedReader(new InputStreamReader(is, "UTF-8"));
  • 0
    Хм ... не вызывает ошибок, но и не декодирует юникод. Тем не менее, если я пытаюсь "UTF-16" или "UTF-16LE", он выдает "java.lang.ArrayIndexOutOfBoundsException".
  • 2
    Если вы не знаете, какую кодировку использует ваш файл, мы тоже не знаем. Это является обязательным условием для правильного чтения файла. Другая возможность состоит в том, что шрифт, который вы используете для отображения прочитанного текста, не содержит глифов для всех символов вашего текста.
Показать ещё 5 комментариев
2

InputStreamReader конструктор InputStreamReader будет считать, что файл имеет "стандартную кодировку" системы. Поскольку это непредсказуемо, что это такое, этот конструктор нельзя использовать, кроме как в примерах игрушек. Используйте один из конструкторов с двумя аргументами, которые позволяют явно указывать кодировку.

Кстати, "Юникод" недостаточно, чтобы рассказать, что находится в файле, который вы хотите прочитать. Unicode сам по себе определяет, как номера ("кодовые точки") присваиваются символам, а не как упаковывать эти числа в байты в файле, что является заданием "кодирования". На практике ваша кодировка, скорее всего, будет либо UTF-8, либо UTF-16, либо какой-либо контентой.

1

Возможно, ваш файл не кодируется в кодировке unicode, или, может быть, способ, которым вы его показываете, не совместим с юникодом (Windows cmd.exe, я смотрю на вас).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню