从 XXX 到 utf-8 的字符集转换,命令行

Posted

技术标签:

【中文标题】从 XXX 到 utf-8 的字符集转换,命令行【英文标题】:Charset conversion from XXX to utf-8, command line 【发布时间】:2011-02-12 22:17:21 【问题描述】:

我有一堆用 ISO-8851-2 编码的文本文件(有一些波兰字符)。是否有适用于 linux/mac 的命令行工具,我可以从 shell 脚本运行以将其转换为更健全的 utf-8?

【问题讨论】:

最有可能是 ISO-8859-2。 ISO 8851 谈到了黄油。 Best way to convert text files between character sets?的可能重复 【参考方案1】:

使用iconv,例如这样:

iconv -f LATIN1 -t UTF-8 input.txt > output.txt

更多信息:

您可能想要指定UTF-8//TRANSLIT 而不是普通的UTF-8。引用手册页:

如果将字符串 //TRANSLIT 附加到 to-encoding,则正在转换的字符会在需要和可能的情况下进行音译。这意味着当一个字符无法在目标字符集中表示时,可以通过一个或几个外观相似的字符来近似。超出目标字符集且无法音译的字符将在输出中替换为问号 (?)。

要获得iconv 接受的编码代码的完整列表,请执行iconv -l

上面的例子使用了shell重定向。确保您没有使用会在重定向时破坏编码的 shell——也就是说,不要为此使用 PowerShell。

【讨论】:

【参考方案2】:
recode latin2..utf8 myfile.txt

这将用新版本覆盖myfile.txt。您也可以使用不带文件名的重新编码作为管道。

【讨论】:

比接受的答案更有效,因为 iconv 不会替换同一个文件,即使使用 -o 或输出重定向。【参考方案3】:

GNU 'libiconv' 应该能够完成这项工作。

【讨论】:

谢谢!我知道这比我想象的要容易!

以上是关于从 XXX 到 utf-8 的字符集转换,命令行的主要内容,如果未能解决你的问题,请参考以下文章

JAVA:从字符串中获取 UTF-8 十六进制值?

将非 ASCII 字符从 ASCII-8BIT 转换为 UTF-8

如何在 Python 中将字符串转换为 utf-8

linux常用命令汇编

linux文件编码转换及Windows上创建的文件转为Linux格式

Python初学--字符串