我的系统是SUSE Linux Enterprise Server 11。
我正在尝试将数据从utf-8格式转换为iso使用“iconv”
$>file test.utf8
test.utf8: UTF-8 Unicode text, with very long lines
$>
$>file -i test.utf8
test.utf8: text/plain charset=utf-8
$>
$>iconv -f UTF-8 -t ISO-8859-1 test.utf8 > test.iso
iconv: test.utf8:20:105: cannot convert
你可以帮我理解这个吗?
感谢。
答案 0 :(得分:18)
您的输入文件包含拉丁文1中不存在的字符。您可以使用-c
选项跳过它们:
iconv -c -futf8 -tl1 test.utf8 > test.iso
答案 1 :(得分:3)
有时最好同时使用-c和// TRANSLIT,例如
$ cat rodriguez
Rodrı́guez
$ file rodriguez
rodriguez: UTF-8 Unicode text
$ iconv --unicode-subst="<U+%04X>" -f UTF-8 -t ISO-8859-1 rodriguez
Rodr<U+0131><U+0301>guez
$ iconv -f UTF-8 -t ISO-8859-1 rodriguez
Rodr
iconv: rodriguez:1:4: cannot convert
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT rodriguez
Rodri
iconv: rodriguez:1:5: cannot convert
$ iconv -c -f UTF-8 -t ISO-8859-1 rodriguez
Rodrguez
$ iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT rodriguez
Rodriguez
答案 2 :(得分:1)
使用//TRANSLIT
参数,将放置虚拟字符。
iconv -f UTF-8 -t ISO-8859-1//TRANSLIT test.utf8 > test.iso