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

时间:2009-03-08 09:42:21

标签: unicode

我有一个要求,客户端将提供编码ANSI的文件,但我的系统只能成功读取UNICODE中的文件。那么我该如何解决这个问题呢?我知道当我“保存为”文件为UNICODE编码时,文件被拾取。很难让客户遵守我们的要求。那么我可以为此文件夹设置任何批处理程序,将此文件转换为UNICODE,然后选择吗?

8 个答案:

答案 0 :(得分:17)

iconv可以做到这一点:

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

答案 1 :(得分:10)

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

答案 2 :(得分:5)

recode可以胜任。

答案 3 :(得分:4)

您还可以在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()

答案 4 :(得分:3)

这是一个Powershell解决方案

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

答案 5 :(得分:2)

您可以创建一个简单的shell脚本(txt_convert.sh <infile> <outfile>):

#!/bin/sh

iconv -f `file -b --mime-encoding "$1"` -t utf8 "$1" -o "$2"

或只是使用:

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

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

答案 6 :(得分:1)

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

我找到了一种更简单的方法来转换 Windows 中的文件。

  1. 安装 Notepad2 http://www.flos-freeware.ch/)。它是开源的,免费的。

  2. 打开文件使用ANSI编码,

  3. 双击&#34; ANSI&#34;在底部的话,

  4. 选择新的编码,例如&#34; utf8&#34;

  5. 保存文件。

  6. 只需点击几下即可完成工作。

    另外,您可以轻松查看内容,以便仔细检查。

    Notepad2与Notepad相比有各种优势。突出显示的代码,撤消/重做等

    :d

答案 7 :(得分:0)

Ruby oneliner,fwiw:

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

如果您的输入文件很糟糕,您可能需要在Ruby脚本的前面添加STDIN.binmode; STDOUT.binmode;