如何将*.txt文件转换为Unicode

如何将*.txt文件转换为Unicode,unicode,Unicode,我有一个要求,客户机将提供一个编码为ANSI的文件,但我的系统只能成功读取UNICODE格式的文件。那么我如何解决这个问题呢?我知道,当我将文件“另存为”为UNICODE编码时,文件会被拾取。很难让客户遵守我们的要求。那么,我可以为这个文件夹使用批处理程序来将这个文件转换成UNICODE然后提取吗 可以做这项工作。可以做: Usage: iconv [OPTION...] [FILE...] Convert encoding of given files from one encoding to

我有一个要求,客户机将提供一个编码为ANSI的文件,但我的系统只能成功读取UNICODE格式的文件。那么我如何解决这个问题呢?我知道,当我将文件“另存为”为UNICODE编码时,文件会被拾取。很难让客户遵守我们的要求。那么,我可以为这个文件夹使用批处理程序来将这个文件转换成UNICODE然后提取吗

可以做这项工作。

可以做:

Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.

 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output

 Information:
  -l, --list                 list all known coded character sets

 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
用法:iconv[选项…][文件…]
将给定文件的编码从一种编码转换为另一种编码。
输入/输出格式规范:
-f、 --from code=原始文本的名称编码
-t、 --to code=输出的名称编码
资料:
-l、 --列出所有已知的编码字符集
输出控制:
-c从输出中省略无效字符
-o、 --输出=文件输出文件
-s、 --静默抑制警告
--详细打印进度信息
-?,--帮助提供此帮助列表
--用法给出一条简短的用法消息
-五、 --版本打印程序版本
长选项的强制或可选参数也是强制或可选的
对于任何相应的短选项。
有关错误报告说明,请参阅:
.

您还可以轻松地在python中转换编码:

inf = open("infile.txt")
data = inf.read().decode("latin1")
inf.close()

outf = open("outfile.txt", "w")
outf.write(data.encode("utf-8"))
outf.close()

这里有一个Powershell解决方案

$lines = gc "pathToFile"
$lines | out-file -enconding Unicode

ANSI和Unicode都不是编码。您必须知道输入文件的ANSI代码页和Unicode编码(UTF8或UTF16-LE或BE),然后才能使用建议的工具之一(如iconv)

我浏览了上面提到的一些工具,其中许多工具需要命令行

我发现在窗口中转换文件的方法要简单得多

  • 安装Notepad2()。它是开源和免费的

  • 打开具有ANSI编码的文件

  • 双击底部的“ANSI”字

  • 选择新编码,如“utf8”

  • 保存文件

  • 只需点击几下就可以完成任务

    此外,您可以轻松地审查内容,一旦做了双重检查

    Notepad2比Notepad有很多优点。突出显示代码、撤消/重做等

    :D

    Ruby oneliner,fwiw:

    ruby -e 'STDOUT.write STDIN.read.force_encoding(Encoding::WINDOWS_1252).encode!(Encoding::UTF_8)' < infile.csv > outfile.csv
    
    ruby-e'STDOUT.write STDIN.read.force_编码(encoding::WINDOWS_1252).encode!(编码:UTF_8)“outfile.csv
    

    如果您的输入文件很糟糕,您可能需要tack
    STDIN.binmode;STDOUT.binmode。

    您可以创建一个简单的shell脚本(
    txt\u convert.sh
    ):

    或者直接使用:

    iconv -f `file -b --mime-encoding "<infile>"` -t utf8 "<infile>" -o "<outfile>"
    
    iconv-f`file-b--mime编码'`t utf8'-o'
    

    说明:“file”命令将确定输入文件的编码,该文件将用作“iconv”的输入编码参数,在这种情况下,该参数将转换为utf8(您可以使用喜欢的输出字符集和iconv支持的任何输出字符集替换utf-8)(请参阅:iconv-l)

    当你说“Unicode”时,你是指UTF8、UTF16、UTF32还是其他表示法?如果不是Unicode,你将如何识别源代码集?你在哪个平台上?大多数人认为UTF-32=Unicode。我指责微软和他们的“另存为”选项在大众中如此流行。看到一个开发人员很难过(谁应该知道得更清楚)共享它。MS主要使用UCS-2,而不是UTF-32。哦,没错!!UCS-2=UTF-16,这是MS在“另存为”选项中错误地称为“Unicode”的编码,我坚持更正(抱歉)。不!UCS-2与UTF-16不同。UTF-16是UCS2的超集,允许非BMP字符编码(使用代理项对)。Windows使用UTF-16希望我能更进一步。对于大多数Windows用户,“Unicode”意味着UTF32。大多数西欧语言使用拉丁1代码页,所以大多数人认为这是“ANSI”编码(我再次指责MS在“另存为”选项中使用了单词)。我们可以补充一点,查看控制面板->区域设置->高级选项将显示安装和使用了哪些ANSI代码页。@JoePineda和Serge:是的,造成混淆的原因肯定是Microsoft,但这个答案忽略了这一事实,因此具有误导性,应该删除,因为它只会造成额外的混淆。问题是微软,不管是有意还是无意,误用了这些术语。在微软speak and software中,“Unicode”特别指“UTF-16 Little Endian”,而“ANSI”特别指“Windows代码页1252”。以下是ANSI的两个示例:和(搜索“1252”)。我看不出使用Notepad2 GUI更改编码比使用命令行容易多少,尤其是在有多个文件要做的情况下?GUI是一个简单的工具:X命令行需要依赖项…notepad++只需单击即可。。。
    iconv -f `file -b --mime-encoding "<infile>"` -t utf8 "<infile>" -o "<outfile>"