Использование iconv с //TRANSLIT//IGNORE
для преобразования из utf8 в ascii работает нормально;он заменяет неконвертируемые символы на правильную транслитерацию в соответствии с текущей локалью (в моем случае это de_DE):
> echo 'möp' | iconv -f 'UTF8' -t 'ASCII//TRANSLIT//IGNORE'
moep
Однако при использовании //IGNORE
без //TRANSLIT
выдается ошибка:
> echo 'möp' | iconv -f 'UTF8' -t 'ASCII//IGNORE'
mp
iconv: illegal input sequence at position 5
Интересно, почему это происходит?Последовательность ввода точно такая же, и не следует ли //IGNORE
просто пропускать недопустимые символы?При использовании iconv C api я получаю ошибку EILSEQ - поэтому я не знаю, содержала ли входная строка недопустимый UTF8 или нет ...