У меня есть код Java, который читает файл Excel и записывает его в текстовый файл. Когда я получаю выходной текстовый файл, я вижу только такие символы в блокноте. "If 搮 ㄱ 〱 〰 ㄰ ㄰ 〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠〰〠" Но если я открою текстовый файл в WordPad или MS-слово, данные отображаются правильно. В чем может быть ошибка?

3 ответа3

3

Ошибка заключается в использовании Блокнота. Блокнот использует первые пару байтов файла, чтобы определить кодировку. Для правильного чтения необходимо открыть файл с определенной кодировкой.

Вот ссылка, чтобы узнать вас: http://blogs.msdn.com/oldnewthing/archive/2007/04/17/2158334.aspx

Извлеченный урок: не используйте блокнот.

2

Вполне вероятно, что первая часть ваших данных внешне похожа на Unicode в определенной кодировке (UTF-16). Это было проблемой в предыдущих версиях Windows, о которой можно прочитать в этой статье. Тем не менее, я думаю, что после Windows Vista эта конкретная проблема была исправлена.

Простой обходной путь - не использовать Блокнот для этих данных.

0

Переключатель командной строки: notepad /A <filename> может использоваться для принудительного открытия файла, как если бы он имел кодировку ANSI, что в этом случае приведет к правильному открытию файла.

Проблема здесь заключается в ошибке «Буш скрыл факты», некоторые txt-файлы имеют 2 или 3-байтовую последовательность, называемую меткой порядка байтов (BOM), определяющей правильную кодировку для файла. Если в файле этого нет, Notepad определяет кодировку файла и может угадать неправильно. Нет спецификации, указывающей, что файл является ANSI, и поэтому файлы ANSI всегда рискуют быть угаданными неправильно. Некоторые текстовые редакторы предполагают, что файл является ANSI, если у него нет спецификации, и подход Notepad к определению кодировки файла может отличаться в зависимости от версии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .