从 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
。
【讨论】:
【参考方案2】:recode latin2..utf8 myfile.txt
这将用新版本覆盖myfile.txt
。您也可以使用不带文件名的重新编码作为管道。
【讨论】:
比接受的答案更有效,因为 iconv 不会替换同一个文件,即使使用 -o 或输出重定向。【参考方案3】:GNU 'libiconv' 应该能够完成这项工作。
【讨论】:
谢谢!我知道这比我想象的要容易!以上是关于从 XXX 到 utf-8 的字符集转换,命令行的主要内容,如果未能解决你的问题,请参考以下文章
将非 ASCII 字符从 ASCII-8BIT 转换为 UTF-8