iconv 无法在 CP1256 -t ISO-8859-6 之间转换

iconv 无法在 CP1256 -t ISO-8859-6 之间转换

我尝试使用 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-1256ISO-8859-6,你可以看到 1256 在每个点都有一个字符,但是 8859-6 有很多空白。所以在转换时,如果有一个不在目标编码中的字符,iconv就会报错。

根据iconv您拥有的版本,您可以使用-c选项,这些不可转换的字符将被删除——文件将变得更短。或者您可以使用类似的东西--unicode-subst="@",它将用可转换的替换无效字符@。请注意,这种替换具有相当大的灵活性,包括扩展(例如"[%u]"将转换为括号中的 Unicode 值)。

如果 Cygwin 没有这些选项,您可以尝试最新的 Linux 或 Mac OS X。

无论如何,生成的文件只能包含 ISO-8859-6 中的字符。

相关内容