2012-02-12 4 views
4

utv8からasciiへの変換には//TRANSLIT//IGNOREのiconvを使用してください。それは現在のロケール(私の場合はde_DEの)に応じて適切な音訳に変換できない文字を置き換える:Iconv:ASCIIを使用したEILSEQ // ASCIIなし// TRANSLIT // IGNORE

> echo 'möp' | iconv -f 'UTF8' -t 'ASCII//IGNORE' 
mp 
iconv: illegal input sequence at position 5 
:しかし

> echo 'möp' | iconv -f 'UTF8' -t 'ASCII//TRANSLIT//IGNORE' 
moep 

、ちょうど//TRANSLITなし//IGNOREを使用して、それがエラーをスローします

なぜそれが起こるのだろうか。入力シーケンスはまったく同じで、//IGNOREは無効な文字をスキップしてはいけませんか? iconv C APIを使用しているときにEILSEQエラーが発生する - 基本的に入力文字列に無効なUTF8が含まれているかどうかわからない...

答えて

1

linuxのiconv(1) :

文字をスキップしますが、最後にエラーが発生します。

// IGNOREを使用すると、入力に無効な文字を含むケースと変換できない文字を区別できないようです。つまり、EILSEQとEINVALの状況は同じに扱われます。

関連する問題