我的输入数据如下(由 hexdump 生成):
000000f0 69 61 6e e2 80 99 73 20 65 79 65 73 20 61 62 72 |ian...s eyes abr|
当我在 Firefox 中打开此 html() 文件时,它会显示这些字符:
ian’s eyes abr
根据链接https://superuser.com/questions/1237545/characters-in-email-displayed-like-e2-80-99,“E2 80 99 是在 UTF-8 中编码右单引号 (') 的十六进制值序列”。
此网站同意:https ://www.utf8-chartable.de/unicode-utf8-table.pl?start=8192&number=128
当我对包含以下字符的文件运行此 iconv 命令时:
iconv -f UTF-8 -t ISO-8859-15 test_chapter.html > blah.html
我得到输出:
iconv: illegal input sequence at position 243
并且“blah.html”的内容在撇号所在的位置被截断。
因此,总而言之,互联网说这是 UTF-8 的有效字节序列,但 iconv 不同意。
有人能帮我了解发生了什么吗?这是 iconv 中的错误吗?
顺便提一下,当我使用 kindlegen 生成 AZW 文件时,字符无法正确显示。互联网告诉我,我需要将文件转换为 UTF-8,但据我所知,它已经是了!
您的评论:
是正确的。问题是 ISO-8859-15 中没有
’
。最相似的字符是'
。看看man 1 iconv
我在使用的 Debian 12 中有什么状态:然後使用
-t ISO-8859-15//TRANSLIT
。作为概念证明,这对我有用(在
pl_PL.UTF-8
区域设置中):输出为
ian's eyes abr
(末尾有一个换行符)。碰巧的是,这个字符串在 ISO-8859-15 和 UTF-8 中的表示形式完全相同,因此我选择不通过另外将管道连接到 来混淆命令iconv -f ISO-8859-15 -t UTF-8
。