再次perl编码转换问题求解!!!
时间:2011-02-17
来源:互联网
最近开始用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
也做了不少测试,可是还是不能理解编码转换的实质。具体问题看
下面的小例子:
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
作者: kitsilence 发布时间: 2011-02-17
编码问题你右上角搜索,本版很多
作者: zhlong8 发布时间: 2011-02-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28