Ant*_*emi 509 unicode text utf-8 character-set
在字符集之间转换文本文件的最快,最简单的工具或方法是什么?
具体来说,我需要从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
Run Code Online (Sandbox Code Playgroud)
由Cheekysoft建议的Gnu 重新编码(手动)将就地转换一个或多个文件.例:
$ recode UTF8..ISO-8859-15 in.txt
Run Code Online (Sandbox Code Playgroud)
这个使用较短的别名:
$ recode utf8..l9 in.txt
Run Code Online (Sandbox Code Playgroud)
Recode还支持可用于在不同行结束类型和编码之间进行转换的曲面:
将换行符从LF(Unix)转换为CR-LF(DOS):
$ recode ../CR-LF in.txt
Run Code Online (Sandbox Code Playgroud)
Base64编码文件:
$ recode ../Base64 in.txt
Run Code Online (Sandbox Code Playgroud)
你也可以将它们结合起来.
将带有Unix行尾的Base64编码的UTF8文件转换为带有Dos行结尾的Base64编码的Latin 1文件:
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
Run Code Online (Sandbox Code Playgroud)在带有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
Run Code Online (Sandbox Code Playgroud)
注意:可能的枚举值为"Unknown,String,Unicode,Byte,BigEndianUnicode,UTF8,UTF7,Ascii".
Tro*_*vin 230
独立的实用方法
iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
Run Code Online (Sandbox Code Playgroud)
-f ENCODING the encoding of the input
-t ENCODING the encoding of the output
Run Code Online (Sandbox Code Playgroud)
您不必指定其中任何一个参数.它们将默认为您当前的语言环境,通常为UTF-8.
Boo*_*oop 85
如果你有 vim你可以使用这个:
未针对每种编码进行测试.
关于这个很酷的部分是你不必知道源编码
vim +"set nobomb | set fenc=utf8 | x" filename.txt
Run Code Online (Sandbox Code Playgroud)
请注意,此命令直接修改该文件
+:vim用于在打开文件时直接输入命令.Usualy用于在特定行打开文件:vim +14 file.txt|:多个命令的分隔符(如;bash)set nobomb :没有utf-8 BOMset fenc=utf8:将新编码设置为utf-8 doc链接x :保存并关闭文件filename.txt :文件的路径":由于管道,qotes在这里.(否则bash会将它们用作bash管)Che*_*oft 38
在Linux下,您可以使用非常强大的recode命令尝试在不同的字符集之间进行转换以及任何行结束问题.recode -l将显示该工具可以在其间转换的所有格式和编码.它可能是一个非常长的列表.
Dan*_*ian 21
iconv -f FROM-ENCODING -t TO-ENCODING file.txt
Run Code Online (Sandbox Code Playgroud)
还有许多语言的基于iconv的工具.
Jay*_*uzi 20
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT
Run Code Online (Sandbox Code Playgroud)
最短的版本,如果您可以假设输入BOM是正确的:
gc FILE.TXT | Out-File -en utf7 file-utf7.txt
Run Code Online (Sandbox Code Playgroud)
Arn*_*son 16
我把它放进去.bashrc:
utf8()
{
iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
rm $1
mv $1.tmp $1
}
Run Code Online (Sandbox Code Playgroud)
..能够像这样转换文件:
utf8 MyClass.java
Run Code Online (Sandbox Code Playgroud)
小智 14
在Windows上,我能够使用Notepad ++进行从ISO-8859-1到UTF-8的转换.单击"Encoding"然后"Convert to UTF-8".
Ser*_*ndt 12
将自动检测所有匹配文本文件的字符编码,并将所有匹配的文本文件转换为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"' -- {} \;
Run Code Online (Sandbox Code Playgroud)
要执行这些步骤,子壳sh使用具有-exec,运行一衬垫与所述-c标志,并且使文件名作为位置参数"$1"与-- {}.在两者之间,utf-8输出文件暂时命名converted.
因此file -bi意味着:
-b, - brief
不要将文件名前置到输出行(简短模式).
-i, - mime
使file命令输出mime类型字符串,而不是更传统的人类可读字符串.因此它可能会说'text/plain; charset = us-ascii'而不是"ASCII文本".
该-b命令对于此类文件管理自动化非常有用.
点击查看更多--brief嘉豪.
假设您不知道输入编码并且仍然希望自动执行大部分转换,我通过总结以前的答案得出了这一结论。
iconv -f $(chardetect input.text | awk '{print $2}') -t utf-8 -o output.text
Run Code Online (Sandbox Code Playgroud)
DOS/Windows:使用代码页
chcp 65001>NUL
type ascii.txt > unicode.txt
Run Code Online (Sandbox Code Playgroud)
命令chcp可用于更改代码页。代码页 65001 是 Microsoft 对 UTF-8 的名称。设置代码页后,以下命令生成的输出将是代码页设置的。
| 归档时间: |
|
| 查看次数: |
472838 次 |
| 最近记录: |