关于Unicode:在字符集之间转换文本文件的最佳方法?

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.txt

    Recode还支持表面,可用于在不同的行尾类型和编码之间转换:

    将换行符从lf(unix)转换为cr-lf(dos):

    1
    $ recode ../CR-LF in.txt

    base64编码文件:

    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

如果你有,你可以使用这个vim

为每一个需要进行编码。

关于这个冷的部分是,你不知道的源编码

1
vim +"set nobomb | set fenc=utf8 | x" filename.txt

在意识到这个命令直接修改文件

解释的一部分。

  • +:直接回车使用Vim的命令时,由一个开放的一个文件。usualy用来打开一个文件在一个特定vim +14 file.txt线:
  • 分离器(|:多样;在bash命令)
  • set nobomb:NO UTF-8的BOM
  • set fenc=utf8:以UTF-8编码集新文档链接
  • x:保存和关闭文件
  • filename.txt:文件路径
  • 在这里,因为":qotes管。(如果他们想使用bash Bash作为管)

  • 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

    我已经把这一.bashrc

    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。"Convert to UTF-8""Encoding"然后点击。


    oneliner使用find,与自动检测

    字符编码的所有文本文件会自动匹配和匹配检测的所有文本文件转换到一utf-8编码:

    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亚sh壳是一个-exec衬里,运行与-c标志和传递的文件名作为参数-- {}"$1"与定位。在输出文件中,utf-8converted是已命名的。

    whereby file -bi均值:

    • B,信文件名不预先在输出线(信模式)。

    • 一、MIME原因是文件的MIME类型字符串命令输出,而更多的人比传统的一读。因此,它可能说的是"text/plain;charset="还比美国ASCII ASCII文本"。

    这是非常有用的find指挥自动化文件管理和搜索。

    点击这里查看更多find嘉豪。


    PHP iconv()

    iconv("UTF-8","ISO-8859-15", $input);


    使用DOS / Windows代码页:

    1
    2
    chcp 65001>NUL
    type ascii.txt > unicode.txt

    chcp命令可以用来改变的代码页。代码页65001是微软的名字为UTF-8。代码页设置输出后,由下面的命令将生成的代码页设置。


    写属性文件(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编码是从所有的湖是一个快速为您的文件。