在字符集之间转换文本文件的最快,最简单的工具或方法是什么?
具体来说,我需要从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
Cheekysoft建议的Gnu recode ( 手册 )将就地转换一个或几个文件 。 例:
$ recode UTF8..ISO-8859-15 in.txt
这使用较短的别名:
$ recode utf8..l9 in.txt
重新编码还支持可用于在不同的行尾类型和编码之间进行转换的表面 :
将换行符从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
在Windows上使用Powershell ( 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支持吗? 使用“字符串”可以做到这一点,反之亦然
gc -en string in.txt | Out-File -en utf8 out.txt
注意:可能的枚举值为“未知,字符串,Unicode,字节,BigEndianUnicode,UTF8,UTF7,Ascii”。
- CsCvt- Kalytta的字符集转换器是Windows另一个基于命令行的出色转换工具。
#1楼
尝试记事本++
在Windows上,我能够使用Notepad ++进行从ISO-8859-1到UTF-8的转换。 单击"Encoding"
,然后单击"Encoding"
"Convert to UTF-8"
。
#2楼
如如何纠正文件的字符编码中所述? 合成吧! 使您可以在ICU库支持的所有编码之间的OS X上轻松转换。
另外,您可以显示从所有编码转换为Unicode的文件的某些字节,以快速查看哪一个字节适合您的文件。
#3楼
尝试VIM
如果您有vim
,可以使用以下命令:
未针对每种编码进行测试。
与此有关的最酷的部分是,您不必知道源编码
vim +"set nobomb | set fenc=utf8 | x" filename.txt
请注意,此命令直接修改文件
说明部分!
-
+
:vim在打开文件时直接输入命令。 通常用于在特定行打开文件:vim +14 file.txt
-
|
:多个命令的分隔符(如bash中的;
) -
set nobomb
:没有utf-8 BOM -
set fenc=utf8
:将新编码设置为utf-8 doc链接 -
x
:保存并关闭文件 -
filename.txt
:filename.txt
路径 -
"
:由于管道的原因,这里出现了qote。(否则bash会将其用作bash管道)
#4楼
Oneliner使用查找,具有自动字符集检测
将 自动检测所有匹配文本文件的字符编码 ,并将所有匹配文本文件转换为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
请勿将文件名--brief
输出行之前(简短模式)。-i
,--mime
导致file命令输出mime类型的字符串,而不是更传统的人类可读字符串。 因此,它可以说例如text/plain; charset=us-ascii
text/plain; charset=us-ascii
而不是ASCII text
。sed
命令可将其切割为iconv
所需的us-ascii
。
find
命令对于这种文件管理自动化非常有用。 点击查看更多find
嘉豪 。
#5楼
编写属性文件(Java)通常我在linux中使用它(mint和ubuntu发行版):
$ native2ascii filename.properties
例如:
$ 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:我在葡萄牙语中写了执行编号一/二来强制使用特殊字符。
就我而言,在第一次执行时,我收到以下消息:
$ 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)时,问题就解决了。
我希望这可以帮助某人。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3158378