Открытие файла Unix в Windows Notepad++?

Я получаю файл от поставщика, который загружаю по SFTP. Все наши системы работают на Windows.

Когда я открываю файл в Notepad++, в строке состояния появляется сообщение "UNIX" и "UTF-8". Специальные символы отображаются неправильно.

введите описание изображения здесь

Я пытался преобразовать файл в разные форматы, которые позволяет Notepad++, но никто не преобразовал символ "OSC" в немецкую букву "ä". Это известная вещь Unix-Windows? Мой гугл-фу явно недостаточно хорош.

  1. Какой тип конвертации я должен попытаться правильно отобразить файл?
  2. Как я могу добиться того же программного в C#?

1 ответ

Обычно в Windows кодировка файла не совпадает с тем, что говорит редактор или даже его заголовок xml. Люди небрежные. Может быть, это действительно UTF-16, или нестандартные окна расширенной ascii, которые, я думаю, вероятно, cp-1252. (Это не характерно для *nix, так как мы все обычно просто используем utf-8, другие не нужны... не говоря уже о том, что пользователи *nix гораздо менее небрежны)

Чтобы выяснить, какая это кодировка, я сделал бы копию файла, затем удалил биты, которые не являются проблемой (оставив Mägenwil как весь файл), а затем сохранил, и использовал команду linux "file", которая скажет, что правильная кодировка (надежна только для небольших файлов... она не читает весь файл; возможно, notepad++ будет делать то же самое). Причина удаления других битов состоит в том, что это может быть смесь UTF-8, которую редактор использовал для обнаружения, плюс что-то еще.

Я бы попробовал команду iconv в linux для тестирования. Например:

iconv -f UTF-16 -t UTF-8 -o outfile infile

И любое преобразование кодировки должно быть возможным в C# или любом другом языке, если вы знаете, как оно было изуродовано, чтобы вы могли обратить его вспять. И если вы обнаружите, что это часть utf-8 и часть чего-то другого, не забывайте преобразовывать не весь файл, а только важные части.

Другие вопросы по тегам