我尝试使用 Sygwin 将 CP1256 转换为 ISO-8859-6 编码,但无法转换!
和幫助?
$ 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
如果你看一下Windows-1256和ISO-8859-6,你可以看到 1256 在每个点都有一个字符,但是 8859-6 有很多空白。所以在转换时,如果有一个不在目标编码中的字符,iconv
就会报错。
根据iconv
您拥有的版本,您可以使用-c
选项,这些不可转换的字符将被删除——文件将变得更短。或者您可以使用类似的东西--unicode-subst="@"
,它将用可转换的替换无效字符@
。请注意,这种替换具有相当大的灵活性,包括扩展(例如"[%u]"
将转换为括号中的 Unicode 值)。
如果 Cygwin 没有这些选项,您可以尝试最新的 Linux 或 Mac OS X。
无论如何,生成的文件只能包含 ISO-8859-6 中的字符。