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

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

【问题讨论】:

标签: command-line encoding scripting character-encoding


【解决方案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' 应该能够完成这项工作。

    【讨论】:

    • 谢谢!我知道这比我想象的要容易!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    相关资源
    最近更新 更多