Ну, я использую 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
.