Сообщение об ошибке iconv немного вводит в заблуждение, но вроде как правильно.
Это не говорит о том, что ввод недопустим в UTF-8, но его нельзя преобразовать в ISO -8859-1 без потерь. ISO-8859-1 не имеет способа кодировать символ ’
.
Убедитесь, что, выполнив эту команду:
echo "ark O’Dwy" | iconv -f UTF-8 -t UTF-7
Это выдаст вывод, который выглядит как "ark O+IBk-Dwy"
.
Здесь я вывожу в UTF-7 (очень редко используемая кодировка, которая полезна здесь для демонстрации, но немного иначе).
Другими словами: кодировка только "незаконна «в том смысле, что его нельзя преобразовать в ISO-8859-1, но это совершенно допустимая последовательность UTF-8.
Если третья сторона заявляет о поддержке UTF-8, то они могут сделать это только очень поверхностно. Они могут поддерживать любой текст, который может быть закодирован в ISO-8859-1, если он закодирован в UTF-8 (что является чрезвычайно низким уровнем "поддержки UTF-8").