2

Я пытался конвертировать из CP1256 в ISO-8859-6 кодировку с использованием Sygwin, но он не может конвертировать!

и помочь?

$ iconv -f CP1256 -t ISO-8859-6 cca.txt > cca1.txt

iconv: cca.txt:791:41: cannot convert

результат sed -n '791p' cca.txt | od -c

является

1 ответ1

3

Если вы посмотрите на карты символов для Windows-1256 и ISO-8859-6, вы увидите, что 1256 имеет символ в каждой точке, но 8859-6 имеет много пробелов. Поэтому при конвертации, если есть символ, которого нет в целевой кодировке, iconv будет жаловаться.

В зависимости от того, какая у вас версия iconv , вы можете использовать опцию -c , и эти неконвертируемые символы будут отброшены - файл станет короче. Или вы можете использовать что-то вроде --unicode-subst="@" , который заменит недопустимые символы на @ , который является конвертируемым. Обратите внимание, что с такой заменой есть некоторая гибкость, включая расширение (например, "[%u]" преобразуется в значение Unicode в скобках).

Если у Cygwin нет этих опций, вы можете попробовать последнюю версию Linux или Mac OS X.

В любом случае полученный файл может содержать только те символы, которые на самом деле соответствуют ISO-8859-6.

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