6

Я создал текстовый файл из приложения, которое я разработал.

Когда я отправляю текстовый файл для проверки СИСТЕМЫ, они (сторонняя система) говорят, что файл недействителен и что в начале файла содержится три символа, которые недопустимы, а также специальные символы не являются правильными.

Они также говорят, что мне нужно использовать ISO 8859-1 или PC850.

Ну, я использую Notepad++, и я совсем не вижу этого! Какая программа для чтения текстовых файлов лучше всего подходит для такого рода проблем?

Альтернативный текст

У меня также есть Mac, и я подумал, что вспомнил открытие в TextMate ... ВОТ ЭТО ДА! Теперь я знаю, о чем они говорят!

Как я могу иметь то же самое в Windows?

Альтернативный текст

3 ответа3

5

Простой способ просмотреть подобные вещи в Windows - использовать команду "type".

Я бы сделал что-то вроде этого:

type filename.txt | more
3

Ну, я использую NotePad++ и не вижу этого вообще! Какая программа для чтения текстовых файлов лучше всего подходит для такого рода проблем?

Проблема в том, что «хороший» текстовый редактор должен иметь возможность прозрачно загружать все текстовые кодировки - даже глупые сломанные, такие как UTF-8-plus-BOM - что помешает вам увидеть проблему. Конечно, хороший текстовый редактор должен сохранять UTF-8 без фальшивой спецификации или, по крайней мере, дать вам возможность сделать это, но вы не узнаете, как его повторно сохранить, если вы не видите там фальшивой спецификации. ,

Причина, по которой вы видите три старших байта в начале файла в TextMate, заключается в том, что TextMate ошибся и угадал кодировку как Latin-1 вместо UTF-8. Предположительно, это воспроизводит поведение службы, которую вы отправляете, которой не известно о Юникоде, но это не совсем желательная функция сама по себе. Это также объясняет , почему æ с и ø с не вышли.

Если вы хотите видеть каждый байт в файле явно, вам нужен не текстовый редактор, а шестнадцатеричный редактор. Есть из чего выбирать, например. xvi32 в Windows.

И затем исправьте свое приложение, чтобы не создавать поддельные спецификации; в любом случае им не место в файле UTF-8, не говоря уже о проблемах, которые это вызывает для приложений, не поддерживающих Юникод. [Я не знаю, для чего написано приложение, но частой причиной нежелательных спецификаций является использование кодировки .NET .Кодировка UTF8 . Было бы предпочтительнее новое кодирование UTF8 (false) .]

В любом случае вам нужно спросить операторов этой службы, хотите ли вы, в какую службу отправляете UTF-8 или какую-то другую кодировку. Если они уже описывают старшие байты для æ et al в вашем файле как «недействительные», вы можете столкнуться с ситуацией, когда они вообще не поддерживают символы не-ASCII, и в этом случае у вас будет рассмотреть возможность транслитерации символов в соответствии с целевым языком, например. æ -> ae .

1

Фред прыгает мне на ум ... это очень хороший инструмент. И, как указал Арджан, вы сохраняете файл как документ в кодировке UTF-8.

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