在字符集之间转换文本文件的最快,最简单的工具或方法是什么?
具体来说,我需要从UTF-8转换为ISO-8859-15,反之亦然.
一切顺利:您最喜欢的脚本语言的单行,命令行工具或OS,网站等的其他实用程序.
在Linux/UNIX/OS X/cygwin上:
Troels Arvin建议的Gnu iconv最适合用作过滤器.它似乎普遍可用.例:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
正如Ben所指出的,有一个使用iconv的在线转换器.
由Cheekysoft建议的Gnu 重新编码(手动)将就地转换一个或多个文件.例:
$ recode UTF8..ISO-8859-15 in.txt
这个使用较短的别名:
$ recode utf8..l9 in.txt
Recode还支持可用于在不同行结束类型和编码之间进行转换的曲面:
将换行符从LF(Unix)转换为CR-LF(DOS):
$ recode ../CR-LF in.txt
Base64编码文件:
$ recode ../Base64 in.txt
你也可以将它们结合起来.
将带有Unix行尾的Base64编码的UTF8文件转换为带有Dos行结尾的Base64编码的Latin 1文件:
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
在带有Powershell的 Windows上(Jay Bazuzi):
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支持吗?使用"String"可以做到这一点,反之亦然
gc -en string in.txt | Out-File -en utf8 out.txt
注意:可能的枚举值为"Unknown,String,Unicode,Byte,BigEndianUnicode,UTF8,UTF7,Ascii".
CsCvt - Kalytta的字符集转换器是另一个基于命令行的Windows转换工具.
Troels Arvin.. 230
独立的实用方法
iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING the encoding of the input
-t ENCODING the encoding of the output
您不必指定其中任何一个参数.它们将默认为您当前的语言环境,通常为UTF-8.
独立的实用方法
iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING the encoding of the input
-t ENCODING the encoding of the output
您不必指定其中任何一个参数.它们将默认为您当前的语言环境,通常为UTF-8.
如果你有 vim
你可以使用这个:
未针对每种编码进行测试.
关于这个很酷的部分是你不必知道源编码
vim +"set nobomb | set fenc=utf8 | x" filename.txt
请注意,此命令直接修改该文件
+
:vim用于在打开文件时直接输入命令.Usualy用于在特定行打开文件:vim +14 file.txt
|
:多个命令的分隔符(如;
bash)
set nobomb
:没有utf-8 BOM
set fenc=utf8
:将新编码设置为utf-8 doc链接
x
:保存并关闭文件
filename.txt
:文件的路径
"
:由于管道,qotes在这里.(否则bash会将它们用作bash管)
在Linux下,您可以使用非常强大的recode命令尝试在不同的字符集之间进行转换以及任何行结束问题.recode -l将显示该工具可以在其间转换的所有格式和编码.它可能是一个非常长的列表.
的iconv(1)
iconv -f FROM-ENCODING -t TO-ENCODING file.txt
还有许多语言的基于iconv的工具.
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT
最短的版本,如果您可以假设输入BOM是正确的:
gc FILE.TXT | Out-File -en utf7 file-utf7.txt
我把它放进去.bashrc
:
utf8() { iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp rm $1 mv $1.tmp $1 }
..能够像这样转换文件:
utf8 MyClass.java
在Windows上,我能够使用Notepad ++进行从ISO-8859-1到UTF-8的转换.单击"Encoding"
然后"Convert to UTF-8"
.
将自动检测所有匹配文本文件的字符编码,并将所有匹配的文本文件转换为utf-8
编码:
$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
要执行这些步骤,子壳sh
使用具有-exec
,运行一衬垫与所述-c
标志,并且使文件名作为位置参数"$1"
与-- {}
.在两者之间,utf-8
输出文件暂时命名converted
.
因此file -bi
意味着:
-b, - brief
不要将文件名前置到输出行(简短模式).
-i, - mime
使file命令输出mime类型字符串,而不是更传统的人类可读字符串.因此它可能会说'text/plain; charset = us-ascii'而不是"ASCII文本".
该-b
命令对于此类文件管理自动化非常有用.
点击查看更多--brief
嘉豪.