如何使用Perl将文件转换为utf-8格式?以及如何检查转换后的文件是否为utf-8格式?
答案 0 :(得分:3)
不需要在iconv
库中安装绑定,例如Text::Iconv
,因为Perl已经自带了一个字符编码库:Encode
。其中一部分是piconv
,iconv(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
答案 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)