使用Perl将文件转换为UTF8格式

时间:2010-05-10 07:05:36

标签: perl format utf-8

如何使用Perl将文件转换为utf-8格式?以及如何检查转换后的文件是否为utf-8格式?

4 个答案:

答案 0 :(得分:3)

不需要在iconv库中安装绑定,例如Text::Iconv,因为Perl已经自带了一个字符编码库:Encode。其中一部分是piconviconv(1)类似工作。使用它将文件批量转换为UTF-8。 ANSI 只是windows-125?编码组的愚蠢名称。您最有可能在windows-1252中编码文件。例如:

piconv -f windows-1252 -t UTF-8 < input-file > output-file

如果缺少元数据,则必须使用启发式方法来确定文件内容的编码。 I have been recommending Encode::Detect

答案 1 :(得分:1)

要进行转换,请查看Text::Iconv

  use Text::Iconv;
  $converter = Text::Iconv->new("fromcode", "tocode");
  $converted = $converter->convert("Text to convert");

答案 2 :(得分:1)

取决于你得到的字符串。如果它是一个文件上传 - 我认为这段代码将有所帮助。但如果它是来自网络/文本的文本将自身转换为utf-8(因为你正在使用utf-8),那么你将会遇到一个问题。

我通常使用:

  

使用Encoding :: Guess

     

我的$ enc = guess_encoding($ string);

然后使用上面的代码,我这样做:

  

使用Text :: Iconv;
  $ converter = Text :: Iconv-&gt; new($ enc,“utf-8”);
  $ converted = $ converter-&gt; convert(“要转换的文字”);

FYI utf-8列表可以在这里找到:

http://www.fileformat.info/info/charset/UTF-8/list.htm?start=1024

http://www.utf8-chartable.de/unicode-utf8-table.pl?start=1024&number=1024&utf8=string-literal&unicodeinhtml=dec

答案 3 :(得分:1)

使用Encode模块,您可以轻松编码不同的编码

e.g;

my $str = "A string in Perl internal format ....";
my $octets = encode("utf-8",$str,Encode::FB_CROAK);

检查utf你可以使用功能

is_utf8($str,Encode::FB_CROAK)