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