Я использую библиотеку iconv для интерфейса от современного источника ввода, использующего UTF-8, к устаревшей системе, использующей Latin1, также известной как CP1252 (надмножество ISO-8859-1).
Интерфейсу недавно не удалось преобразовать французскую строку «Éducation», где «É» была закодирована как шестнадцатеричная 45 CC 81
. Обратите внимание, что кодировка назначения имеет символ «É», закодированный как C9
.
Почему iconv не может преобразовать "É"? Я проверил, что инструмент командной строки iconv, доступный в MacOS X 10.7.3, говорит, что не может преобразовать, и что модуль iconv PERL также дает сбой.
Это тем более озадачивает, что предварительно составленная форма символа «É» (закодированная как C3 89
) преобразуется очень хорошо.
Это ошибка iconv или я что-то пропустил?
Обратите внимание, что у меня также возникает та же проблема, если я пытаюсь преобразовать из UTF-16 (где «É» кодируется как 00 C9
составлено или 00 45 03 01
разложено) .