Символы '' отображаются при чтении из текстового файла

Используя тот же проект и текстовый файл, что и здесь: Java.NullPointerException null (снова) программа выводит данные, но с . Чтобы представить вас на картинке:

Эта программа представляет собой телефонный справочник, игнорируя первый «кодовый» блок, посмотрите второй «кодовый» блок по этой ссылке, то есть текстовый файл с записями. Программа выводит их как надо, но она дает  в начале записей, считанных ТОЛЬКО из текстового файла.

Любая помощь о том, как удалить его? Я использую Buffered Reader с File Reader. Заранее спасибо.

  • Кодировка текстового файла: UTF-8
  • Использование Java 7
  • Windows 7

person Mark Said Camilleri    schedule 05.02.2013    source источник
comment
Пожалуйста, сообщите: кодировка входного файла, среда ОС, в которой вы это делаете, кодировка по умолчанию для java Readers на вашей платформе, как и где отображаются данные? (т.е. в графическом интерфейсе, в окне терминала или еще где-то)   -  person Ingo    schedule 05.02.2013
comment
Google для спецификации (знак порядка байтов)   -  person leonbloy    schedule 05.02.2013


Ответы (2)



Я предполагаю, что ваш входной файл закодирован в UTF-8 со спецификацией.

Вы можете либо сохранить входной файл без спецификации, либо обработать его на Java.

Здесь можно использовать InputStreamReader с соответствующей кодировкой. К сожалению, это невозможно. Дело в том, что Java предполагает, что файл в кодировке UTF-8 не имеет спецификации, поэтому вам придется обрабатывать этот случай вручную.

Быстрый хак — проверить, являются ли первые три байта вашего файла 0xEF, 0xBB, 0xBF, и если они есть, проигнорировать их.

Для более сложного примера взгляните на класс UnicodeBOMInputStream в этом ответе.

person Carsten    schedule 05.02.2013
comment
Не лучше ли было бы прочитать файл в той кодировке, в которой он находится? Как вы гарантируете, что остальная часть файла будет ASCII? - person Ingo; 05.02.2013
comment
@Ingo Я никогда не предполагал, что это ASCII, FileReader использует кодировку системы по умолчанию. Я просто хотел дать ОП быстрый взлом, чтобы справиться с этим, но я отредактировал свой ответ, чтобы немного уточнить. Лучше? :-) - person Carsten; 05.02.2013