чтение файла с акцентированными символами в Java - PullRequest
4 голосов
/ 01 мая 2011

Я столкнулся с двумя специальными символами, которые, похоже, не охватываются набором символов ISO-8859-1, т. Е. Они не попадают в мою программу.

Немец ß и норвежский ø

Я читаю файлы следующим образом:

FileInputStream inputFile = new FileInputStream(corpus[i]);
InputStreamReader ir = new InputStreamReader(inputFile, "ISO-8859-1") ;

Могу ли я прочитать эти символы, не применяя ручную замену в качестве обходного пути?

[EDIT]

вот так это выглядит на экране. Обратите внимание, что у меня нет проблем с другими акцентами, например и много ...

enter image description here

Ответы [ 3 ]

3 голосов
/ 01 мая 2011

Оба символа присутствуют в ISO-Latin-1 (проверьте мое имя, чтобы понять, почему я это изучил).

Если символы не были правильно прочитаны, наиболее вероятной причиной является то, что текст в файле сохраняется не в этой кодировке, а в другом месте.

В зависимости от вашей операционной системы и источника файла возможными кодировками могут быть UTF-8 или кодовая страница Windows, например 850 или 437.

Самый простой способ - посмотреть на файл с помощью шестнадцатеричного редактора и сообщить, какие точные значения сохранены для этих двух символов.

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

ISO-8859-1 охватывает ß и ø , поэтому файл, вероятно, сохраняется в другой кодировке.Вы должны передать кодировку файла на new InputStreamReader().

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

Предполагая, что ваш файл, вероятно, в кодировке UTF-8 , попробуйте это:

InputStreamReader ir = new InputStreamReader(inputFile, "UTF-8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...