使用iconv命令将UTF-8转换为ISO8859-1

3
我希望将一些utf8文件(文本文件)转换为ISO-8859-1文件。我使用以下命令行:
iconv -c -f UTF-8 -t ISO8859-1 input_file > output_file

创建的文件(output_file)确实使用了新编码,即使是带重音符号的字母也没有问题。

只有一个字符不正确:撇号... 不是键盘上数字 4 上显示的那个,而是像在 Word 文件中可以输入的那种。


问题在于它被转换为SUB字符,就像你在notepad++中打开word文件时看到的东西一样。
 (I copy the SUB here seen in notepad++ and it displays like that, obviously invisible when I submit this page)

在notepad++中,有一个菜单选项可以将文件从一种编码转换为另一种编码。任何字符都没有问题。在Unix中是否有类似的功能来完成这个工作?
谢谢。

字符 在 ISO-8859-1 中不存在... 这使得“正确”的或者预期的结果有些不清楚。 - deceze
好的,我理解问题的原因了。有没有办法像Notepad++那样做呢?它可以轻松地转换为ANSI编码。我也尝试过将其转换为ANSI编码,但是转换器无法理解。 - mlwacosmos
嗯,你可以在使用iconv进行转换之前,将 替换为其他字符,比如:echo Frank’s ’ | sed "s/’/'/g"|iconv -f utf8 -t iso8859-1 将输出 Frank's ' - James Brown
我不是Unix专业人士。我该如何使用input_file和output_file来完成类似示例中的操作? - mlwacosmos
1
sed "s/’/'/g" input_file | iconv [your params here] > output_file - James Brown
1个回答

3

好的,您可以在使用iconv之前将'替换为其他内容(如下面的'),例如:

echo Frank’s ’ | sed "s/’/'/g" | iconv -f utf8 -t iso8859-1
Frank's '

将这样的文件转换:

sed "s/’/'/g" input_file | iconv [your params here] > output_file

由于某种原因,sed命令无法替换这个奇怪的字符。 - mlwacosmos
你的shell的locale是utf8吗(输入命令locale,我的输出是- - LC_ALL=en_US.utf8)?不管怎样,你的环境是什么? - James Brown
LC_ALL 是空的或为空 - mlwacosmos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接