我需要将文件的编码格式从ANSI更改为UTF-8 ...请建议我完成此操作,我已经使用了一些方法。但它没有用。在这里,我编写了代码,我已经完成了。
use utf8;
use File::Slurp;
$File_Name="c:\\test.xml";
$file_con=read_file($File_Name);
open (OUT, ">c:\\b.xml");
binmode(OUT, ":utf8");
print OUT $file_con;
close OUT;
答案 0 :(得分:1)
假设您有一个有效的XML文件,可以这样做:
use XML::LibXML qw( );
my $doc = XML::LibXML->new()->parse_file('text.xml');
$doc->setEncoding('UTF-8');
open(my $fh, '>:raw', 'test.utf8.xml')
or die("Can't create test.utf8.xml: $!\n");
print($fh $doc->toString());
它处理转换编码和调整<?xml?>
指令。之前的答案在<?xml?>
指令中留下了错误的编码。
答案 1 :(得分:0)
如果您只想制作过滤器,请尝试以下操作:
perl -MEncode -pwe 's/(.*)/encode('utf8', $1)/e;'
例如:
type c:\text.xml |perl -MEncode -pwe 's/(.*)/encode('utf8', $1)/e;' >c:\b.xml
或修改您的代码:
use File::Slurp;
use Encode;
$File_Name="c:\\test.xml";
$file_con=read_file($File_Name);
open (OUT, ">c:\\b.xml");
print OUT encode('utf8', $file_con);
close OUT;
答案 2 :(得分:-1)
使用Text::Iconv
:
use Text::Iconv;
$converter = Text::Iconv->new("cp1252", "utf-8");
$converted = $converter->convert($file_con);
(假设您使用代码页1252作为默认代码页)。