在字符集之间转换文本文件的最快,最简单的工具或方法是什么?
具体来说,我需要从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 …
我正在尝试将一堆文件从US-ASCII转码为UTF-8.
为此,我正在使用iconv:
iconv -f US-ASCII -t UTF-8 file.php > file-utf8.php
Run Code Online (Sandbox Code Playgroud)
事情是我的原始文件是US-ASCII编码,这使得转换不会发生.显然它会发生因为ASCII是UTF-8的一个子集......
引用:
在引入非ascii字符之前,不需要显示文本文件
真正.如果我在文件中引入非ASCII字符并保存它,那么假设使用Eclipse,文件编码(charset)将切换为UTF-8.
在我的情况下,我想强制iconv将文件转码为UTF-8.是否存在非ASCII字符.
注意:原因是我的PHP代码(非ASCII文件...)正在处理一些非ASCII字符串,这导致字符串不能很好地解释(法语):
Ilétait une fois ... l'hommesé©animéemythique d'Albert
Barillé(Procidis),1?
...
编辑
US-ASCII- 是 - 的一部分UTF-8(见下面Ned的回答)US-ASCII文件是在实际编码UTF-8我想用iconv来转换Mac上的文件.目标是从"Windows ANSI"转到"Windows Notepad保存的任何内容,如果你告诉它使用UFT8".
这就是我要的:
anders-johansen-privats-macbook-pro:test andersprivat$ file names.csv
names.csv: UTF-8 Unicode (with BOM) text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)
这是我使用的:
iconv -f CP1252 -t UTF-8 names.csv > names.utf8.csv
Run Code Online (Sandbox Code Playgroud)
这就是我得到的(不是我想要的):
file names.utf8.csv
names.utf8.csv: UTF-8 Unicode text, with CRLF line terminators
Run Code Online (Sandbox Code Playgroud)
我如何获得BOM?