Какая кодовая страница кодирует 'ç' как '? º' (0x3f 0xba) - PullRequest
6 голосов
/ 11 марта 2011

Сегодня я получил от клиента файл, который мне нужно прочитать, но он содержит странные символы.Используя известные имена, я могу угадать значение некоторых символов.

Например:

Realname  | Encoded as   | sign  | hex
----------|--------------|-------|-------
Françios  | Fran?ºios    | ç     | 3f ba
André     | Andr??       | é     | 3f 3f
Hélène    | H??l?¿ne     | è     | 3f bf
etc.
  • Я перепробовал все кодовые страницы (известные .Net) для импорта файла,и посмотрим, содержат ли они слова, которые я знаю.Но никакая кодовая страница не дает мне удовлетворения.
  • Открытие файла в Notepad ++ считает, что это ANSI, а также показывает нежелательные символы.(Но у него есть плагин hex-редактора, который полезен).
  • Другие файлы (от того же пользователя и zipfile) закодированы в UTF-8.

От парня, которого яполучил файлы от, я не могу ожидать помощи.(Используя Google Translate) он дал мне понять, что ему очень трудно просто создавать файлы, и он использует программное обеспечение (я полагаю, SAP), к которому у меня нет доступа.

Есть ли какие-либоиначе я могу найти кодировку файлов, которые он мне только что отправил?

Ответы [ 2 ]

6 голосов
/ 11 марта 2011

Я могу получить эти результаты, если беру текст в кодировке UTF-8, притворяюсь, что это CP850 , а затем преобразую его в Latin-1 , Windows-1252 или аналогичная кодировка. "?" происходит от того факта, что символ CP850 в 0xc3 равен «" », чего нет в Latin-1 или производных кодировках, поэтому преобразование заменяет его на«? ».


Редактировать: Я сделал более широкий поиск с использованием iconv, и CP437 , CP862 или CP865 являются лучшими соответствиями чем CP850. С тех пор, как вы спросили, в этот раз я использовал одну строку:

for enc in `iconv -l`; do echo -n "$enc: "; echo -n "ç é è" | iconv -s -f $enc -t "LATIN1//TRANSLIT" 2>/dev/null; echo; done
1 голос
/ 11 марта 2011

это должен UTF-8 или UTF-16.они содержат почти все обычные символы.похоже, у вас проблема с декодированием / кодированием.

notepad ++ это может привести к путанице, поскольку ваши файлы не используют метку порядка байтов.

как вы обрабатываете ваши файлы?

попробуйте прочитать их в двоичном виде, а затем попробуйте разные кодировки, чтобы получить строку.если вы не читаете их как двоичные, может иметь место кодировка по умолчанию.

"?"является признаком этого.

может быть , что помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...