免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3046 | 回复: 8
打印 上一主题 下一主题

再次perl编码转换问题求解!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-17 16:36 |只看该作者 |倒序浏览
最近开始用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

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2011-02-17 16:45 |只看该作者
编码问题你右上角搜索,本版很多

论坛徽章:
0
3 [报告]
发表于 2011-02-17 19:24 |只看该作者
你那个a.txt是不是用的不是UTF-8保存的,我试了下没出现你那问题

论坛徽章:
0
4 [报告]
发表于 2011-02-18 09:32 |只看该作者
回复 3# qinglangee


    我非常确定我保存的格式就是utf-8的,请问你的环境是什么呢

论坛徽章:
0
5 [报告]
发表于 2011-02-18 10:54 |只看该作者
回复 4# kitsilence
也是XP,命令窗口运行的
utf-8保存1乱2不乱,换成本地编码保存a.txt就是第一个不乱码,第二个乱码

论坛徽章:
0
6 [报告]
发表于 2011-02-18 13:16 |只看该作者
编码问题很复杂,与各种环境有关,输入输出终端文件等。环境不同,基本没人能解答你的问题,自己多试。

论坛徽章:
0
7 [报告]
发表于 2011-02-18 14:37 |只看该作者
回复 6# 兰花仙子


    受教了!我装了个cygwin,在上面运行perl编码转换确实和xp的有些不一样,虽然根本问题还是没有解决,还是要谢谢斑竹指点!

论坛徽章:
0
8 [报告]
发表于 2011-02-18 14:41 |只看该作者
回复 2# zhlong8


    这个问题其实何止本版很多呢,其他论坛也很多啊!

   我就是查看了很多完了自己的测试跟到处公认的结论不一样才郁闷的

论坛徽章:
0
9 [报告]
发表于 2011-02-18 14:49 |只看该作者
回复 5# qinglangee


    通过你的答案和斑竹的提示,我表示理解深一点了,但也表示有点无奈!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP