【发布时间】:2010-09-09 01:19:54
【问题描述】:
在字符集之间转换文本文件的最快、最简单的工具或方法是什么?
具体来说,我需要从 UTF-8 转换为 ISO-8859-15,反之亦然。
一切顺利:您最喜欢的脚本语言、命令行工具或其他适用于操作系统、网站等的实用程序的单行代码。
迄今为止的最佳解决方案:
在 Linux/UNIX/OS X/cygwin 上:
-
Troels Arvin 建议的 Gnu iconv 最好用作过滤器。它似乎是普遍可用的。示例:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt正如Ben所指出的,有一个online converter using iconv。
-
Cheekysoft 建议的
recode (manual) 将就地转换一个或多个文件。示例:
$ recode UTF8..ISO-8859-15 in.txt这个使用较短的别名:
$ recode utf8..l9 in.txtRecode 还支持 surfaces,可用于在不同的行尾类型和编码之间进行转换:
将换行从 LF (Unix) 转换为 CR-LF (DOS):
$ recode ../CR-LF in.txtBase64 编码文件:
$ recode ../Base64 in.txt您也可以将它们组合起来。
将带有 Unix 行结尾的 Base64 编码的 UTF8 文件转换为带有 Dos 行结尾的 Base64 编码的拉丁 1 文件:
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
在带有Powershell (Jay Bazuzi) 的 Windows 上:
PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt
(虽然不支持 ISO-8859-15;它说支持的字符集是 unicode、utf7、utf8、utf32、ascii、bigendianunicode、default 和 oem。)
编辑
您的意思是支持 iso-8859-1 吗?使用“字符串”可以做到这一点,例如反之亦然
gc -en string in.txt | Out-File -en utf8 out.txt
注意:可能的枚举值为“Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii”。
- CsCvt - Kalytta's Character Set Converter 是另一个出色的基于命令行的 Windows 转换工具。
【问题讨论】:
-
我试过
gc -en Ascii readme.html | Out-File -en UTF8 readme.html,但它会将文件转换为utf-8,但它是空的! Notepad++ 说该文件是 Ansi 格式,但据我了解,它甚至不是有效的字符集? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExF -
刚刚遇到这个寻找相关问题的答案 - 很棒的总结!只是认为值得添加
recode如果您不传递任何文件名,它也将充当过滤器,例如:recode utf8..l9 < in.txt > out.txt -
iconv.com/iconv.htm 对我来说似乎已经死了? (超时)
-
如果使用
enca,则无需指定输入编码。通常只需指定语言即可:enca -L ru -x utf8 FILE.TXT。 -
实际上,iconv 作为就地转换器而不是过滤器效果更好。使用
iconv -f UTF-32 -t UTF-8 input.csv > output.csv转换一个超过 200 万行的文件只节省了大约 70 万行,只有三分之一。使用就地版本iconv -f UTF-32 -t UTF-8 file.csv成功转换了所有 200 万行以上。
标签: text unicode utf-8 character-set