求助一个法语转化为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";
}
有个例子,把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";
}
...全文
相关推荐
UTF8格式的TXT文件转化为ANSI格式
将UTF8格式的TXT文件转化为ANSI格式 在DOS下键入: ConvertUTF8 srcFile desFile 方法详见,Conv.bat
字符编码批量转化为UTF8
使用说明, 1、运行软件后,打开文档,理论上会自动识别字体编码,如果识别错误的话,需要手动选择成正确的,再转换,否则会出错。 2、支持文件夹批量操作。 3、支持简体繁体操作。
编码转换工具UTF8转GBK或者GBK转UTF8
编码转换工具UTF8转GBK或者GBK转UTF8,强烈推荐。它支持各类编码互转,且支持批量文件转码。
UTF8转16进制工具 Utf8ToHex
将UTF-8字符串转换为Latin1编码,比如中文“你好”转换为“\xE4\xBD\xA0\xE5\xA5\xBD”
C++实现判断一个字符串是否为UTF8或GBK格式的方法
主要介绍了C++实现判断一个字符串是否为UTF8或GBK格式的方法,涉及C++针对字符编码的遍历、判断、编码转换等相关操作技巧,需要的朋友可以参考下



