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