Meus dados de entrada são os seguintes (conforme gerados pelo hexdump):
000000f0 69 61 6e e2 80 99 73 20 65 79 65 73 20 61 62 72 |ian...s eyes abr|
Quando abro este arquivo html() no Firefox, ele exibe estes caracteres como:
ian’s eyes abr
De acordo com o link https://superuser.com/questions/1237545/characters-in-email-displayed-like-e2-80-99 , "E2 80 99 é a sequência de valores hexadecimais que codificam uma aspa simples direita (') em UTF-8".
Este site concorda: https://www.utf8-chartable.de/unicode-utf8-table.pl?start=8192&number=128
Quando executo este comando iconv no arquivo que contém estes caracteres:
iconv -f UTF-8 -t ISO-8859-15 test_chapter.html > blah.html
Recebo a saída:
iconv: illegal input sequence at position 243
e o conteúdo de "blah.html" é truncado exatamente onde o apóstrofo estaria.
Então, para resumir, a internet diz que essa é uma sequência válida de bytes para UTF-8, mas o iconv discorda.
Alguém pode me ajudar a entender o que está acontecendo? Isso é um bug no iconv?
Como nota lateral, quando uso esse arquivo html com kindlegen para gerar um arquivo AZW, o caractere não é exibido corretamente. Tudo o que a internet pode me dizer é que preciso converter o arquivo para UTF-8, mas, até onde sei, já está!
Seu comentário:
está no caminho certo. O problema é que não há
’
no ISO-8859-15. O caractere mais similar é'
. Veja quaisman 1 iconv
estados no Debian 12 estou usando:Use
-t ISO-8859-15//TRANSLIT
então.Como prova de conceito, isso funciona para mim (no
pl_PL.UTF-8
local):A saída é
ian's eyes abr
(com uma nova linha no final). Acontece que a representação dessa string exata é idêntica em ISO-8859-15 e em UTF-8, então escolhi não ofuscar o comando canalizando adicionalmente paraiconv -f ISO-8859-15 -t UTF-8
.