Answers:
该文件以ISO-8859-1编码,而不是以UTF-8编码:
$ hd 0606461.txt | grep -B1 '^0002c520'
0002c510 64 75 6d 20 66 65 72 69 65 6e 74 20 72 75 69 6e |dum ferient ruin|
0002c520 e6 0d 0a 2d 2d 48 6f 72 61 63 65 2e 0d 0a 0d 0a |...--Horace.....|
并且仅字节“ e6”不是有效的UTF-8序列。
因此,请使用iconv -f latin1 -t ascii//TRANSLIT file
。
您链接的文件似乎是HTML文档中的 UTF-8
$ file 0606461.txt
0606461.txt: HTML document, ASCII text, with CRLF line terminators
如果首先通过HTML到文本转换器运行它,例如
iconv -f UTF-8 -t ascii//TRANSLIT < <(html2text 0606461.txt)
然后您似乎遇到麻烦的UTF-8片段似乎音译正确,即
Si fractus illabatur orbis.
Impavidum ferient ruinæ
--Horace.
变成
Si fractus illabatur orbis.
Impavidum ferient ruinae
--Horace.
该html2text
实用程序可能未安装在您的系统上-如果找不到/安装该实用程序,则还有其他转换器,包括python模块。
file
命令的意思是ASCII,但原因是,它只是看起来在文件的开头和ISO-8859-1字符出现远,位置181536.
hexdump -C file
命令并得到了0002b220 72 75 69 6e e6 0a 20 2d 2d 20 48 6f 72 61 63 65 |ruin.. -- Horace|
输出。