求助一个法语转化为UTF8的问题
有个法语的文件,用的是ansi编码(也许不叫这个...),现在要转化为utf8的,请问该如何编写代码?我的转换总是不成功,怪怪的。
有个例子,把0xa8 0xa8,转变成0xc3 0xa8,就算ok了。
这个字母是 è ,他的ansi编码是0xa8 0xa8,utf8是0xc3, 0xa8
代码如下:
use Encode qw/from_to encode decode/;
use encoding 'utf8';
# 为了防止编辑器显示不同而直接用十六进制生成字符串
$a = pack("C*", 0x61, 0xa8, 0xa8, 0x72); # 原始字符串 aèr
dumphex($a);
$a = pack("C*", 0x61, 0xa8, 0xa8, 0x72);
$b = decode("iso-8859-15", $a); # 试过换成iso-8859-1,仍然不成
$a = encode("utf8", $b);
dumphex( $a );
dumphex( pack("C*", 0x61, 0xc3, 0xa8, 0x72) ); # 应当转换为此
sub dumphex
{
my ($str) = @_;
print $str, "\t\t";
foreach (unpack("C*", $str))
{
printf "%lx", ord(chr($_));
print " ";
}
print "\n";
}