web-dev-qa-db-ja.com

iconvがutf-8からiso-8859-1に変換できない理由

私のシステムはSUSE Linux Enterprise Server 11です。

「iconv」を使用してデータをutf-8形式からisoに変換しようとしています

$>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

これを機知に助けてもらえますか?ありがとう。

14
Łukasz Bensz

入力ファイルには、ラテン1には存在しない文字が含まれています。-cオプションをスキップする:

iconv -c -futf8 -tl1 test.utf8 > test.iso
19
choroba

場合によっては、-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
4
peak

使用する //TRANSLITパラメータとダミー文字が配置されます。

iconv -f UTF-8 -t ISO-8859-1//TRANSLIT test.utf8 > test.iso

1