在 Linux 中,我使用以下命令将 UTF-8
文件转换为 ISO-8859-1
文件:
iconv -f UTF-8 -t ISO-8859-1//TRANSLIT input.txt > out.txt
转换后,当我打开out.txt
¿Quién Gómez is translated to ¿Quien Gomez.
为什么 é
和 ó
以及其他翻译不正确?
最佳答案
在 Unicode 中有(至少)两种表示重音字母 é
的方法:作为单个代码点 U+00E9
,带尖音符号的拉丁文小写字母 E,并作为一个双字符序列 e
(U+0065
) 后跟 U+0301
,组合重音符。
您的输入文件使用后一种编码,iconv
显然无法转换为 Latin-1 (ISO-8859-1)。使用 //TRANSLIT
后缀,它通过未修改的未重音 e
并删除组合字符。
您可能需要转换输入,使其不使用组合字符,将序列 U+0065
U+0301
替换为单个代码点 U+00E9
(以2个字节表示)。要么,要么安排生成输入文件的任何内容首先使用该编码。
这就是问题所在;我目前不知道如何更正它。
关于linux - 为什么 Linux 中的 iconv 不能正确地将 UTF-8 中的西类牙字符转换为 ISO-8859-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25086293/