- 论坛徽章:
- 0
|
最近开始用perl,接触到perl文字编码的问题,看了不少资料
也做了不少测试,可是还是不能理解编码转换的实质。具体问题看
下面的小例子:
Utf转gb2312的方法:
use Encode;
my $str = "utf8中文";
print $str."\n"; #打印出乱码(可以理解)
$str_cnsoftware = encode("gb2312", decode("utf-8", $str);
print $str_cnsoftware ."\n"; #打印正常中文
这个测试把源码文件保存为utf-8格式就能运行正常,但是 $str 如果是从
其他文件获取来的,那打印的结果就不正常了,比如我把“utf中文”
存储在编码格式为utf-8的a.txt文件然后去读取这个文件,代码如下:
open(MYFILE,"<D:/a.txt") or die "error!";
$str = <MYFILE>;
print $str."\n"; #打印乱码
$str_cnsoftware = encode("gb2312", decode("utf-8", $str);
print $str_cnsoftware ."\n"; #依旧是打印乱码
这点测试和上一点的区别就是$str字符串的来源,上一个就是源码文件(保存为utf-8格式)
里的,本次来源于读取保存为utf-8格式的txt文件,为什么从外部文件读取
的中文字符串无法转换编码(或者是转换错误...)为什么差别就这么大呢?
很是不理解~~~~ 囧得有点郁闷了
真诚向各位大哥大姐求教!!!
补充下:环境:xp dos窗口 activeperl5.8.8 |
|