Best way to convert text files between character sets?
在字符集之间转换文本文件的最快、最简单的工具或方法是什么?
具体来说,我需要从UTF-8转换为ISO-8859-15,反之亦然。
每件事都是这样的:用您最喜欢的脚本语言、命令行工具或其他用于操作系统、网站等的实用程序编写的一行程序。
迄今为止最好的解决方案:在Linux/Unix/OS X/Cygwin上:
Troles Arvin建议的GNU ICONV最好用作过滤器。它似乎是普遍可用的。例子:
1$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt正如本所指出的,有一个使用iconv的在线转换器。
Cheekysoft建议的GNU重编码(手动)将在适当的位置转换一个或多个文件。例子:
1$ recode UTF8..ISO-8859-15 in.txt这一个使用较短的别名:
1$ recode utf8..l9 in.txtRecode还支持表面,可用于在不同的行尾类型和编码之间转换:
将换行符从lf(unix)转换为cr-lf(dos):
1$ recode ../CR-LF in.txtbase64编码文件:
1$ recode ../Base64 in.txt你也可以把它们结合起来。
将具有unix行结尾的base64编码的utf8文件转换为具有dos行结尾的base64编码的拉丁1文件:
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吗?使用"字符串"是这样做的,例如,反之亦然
1 | gc -en string in.txt | Out-File -en utf8 out.txt |
注意:可能的枚举值为"unknown、string、unicode、byte、bigendianunicode、utf8、utf7、ascii"。
- kalytta的字符集转换器是另一个伟大的基于命令行的Windows转换工具。
独立的实用方法
1 | iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt |
1 2 | -f ENCODING the encoding of the input -t ENCODING the encoding of the output |
你没有指定任何参数研究。他们会到你的默认流的现场,这是通常的UTF - 8。
尝试vim
如果你有,你可以使用这个
为每一个需要进行编码。
关于这个冷的部分是,你不知道的源编码
1 | vim +"set nobomb | set fenc=utf8 | x" filename.txt |
在意识到这个命令直接修改文件
解释的一部分。
Linux下使用非常强大的功能,你可以尝试和指挥之间的转换不同的字符集的问题,工作人员的任何线结束。我想告诉你所有的记录和编码的格式,CAN总线之间的转换工具。它可能会很长的列表。
1 | Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT |
如果你能在最短的版本,这是假定这是正确的:输入BOM
1 | gc FILE.TXT | Out-File -en utf7 file-utf7.txt |
iconv(1)
1 | iconv -f FROM-ENCODING -t TO-ENCODING file.txt |
所以有很多基于iconv工具语言。
iconv函数try的bash
我已经把这一
1 2 3 4 5 6 | utf8() { iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp rm $1 mv $1.tmp $1 } |
..to可以转换文件像:
1 | utf8 MyClass.java |
记事本+ + TRY
我可以使用Windows下的记事本+ +做的转换从ISO 8859-1以UTF-8。
oneliner使用find,与自动检测
字符编码的所有文本文件会自动匹配和匹配检测的所有文本文件转换到一
1 | $ 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"' -- {} \; |
论文对执行步骤,A亚
whereby
B,信文件名不预先在输出线(信模式)。
一、MIME原因是文件的MIME类型字符串命令输出,而更多的人比传统的一读。因此,它可能说的是"text/plain;charset="还比美国ASCII ASCII文本"。
这是非常有用的
点击这里查看更多
PHP iconv()
使用DOS / Windows代码页:
1 2 | chcp 65001>NUL type ascii.txt > unicode.txt |
写属性文件(Java)通常我使用Linux(Ubuntu这个薄荷和分布):
1 | $ native2ascii filename.properties |
例如:
1 2 3 4 5 6 7 | $ cat test.properties first=Execu??o número um second=Execu??o número dois $ native2ascii test.properties first=Execu\u00e7\u00e3o n\u00famero um second=Execu\u00e7\u00e3o n\u00famero dois |
PS:我的两个在一writed执行数/时间到空军特殊字符。
在我的案例,我收到这个消息在第一执行:
1 2 3 4 5 6 7 | $ native2ascii teste.txt The program 'native2ascii' can be found in the following packages: * gcj-5-jdk * openjdk-8-jdk-headless * gcj-4.8-jdk * gcj-4.9-jdk Try: sudo apt install <selected package> |
当我安装的第一个选项(GCJ 5 JDK)是完成的问题。
我希望这帮助的人。
只需在状态栏(底部)右侧的intellij idea ide中更改加载文件的编码,其中指示当前字符集。它提示重新加载或转换,使用convert。确保您提前备份了原始文件。
红宝石:与
1 | ruby -e"File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))" |
来源:http:///搏击robots.thoughtbot.com反馈无效字节的UTF - 8序列
使用这个Python脚本:http://github.com /转换/ goerz _ encoding.py在任何平台。需要Python 2.7。
我最喜欢的工具是Jedit(基于Java的文本编辑器),它有两个非常方便的特性:
- 一种允许用户用不同的编码重新加载文本的方法(也就是说,用视觉方式控制结果)。
- 另一个允许用户在保存之前显式选择编码(和行尾字符)
在描述我如何为正确的字符编码的文件?synalyze它!让你可以在OS X的所有编码之间转换的库支持的重症监护病房。
此外,你可以显示一个文件翻译的一些字节的Unicode编码是从所有的湖是一个快速为您的文件。