免费注册 查看新帖 |

Chinaunix

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

编码问题再探讨 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-19 17:14 |只看该作者 |倒序浏览
if($response->is_success){
                my $content=$response->content;
                $content=decode('gbk',$content);        
                #$content=~/.*?请尽快到<(.*)>检查邮件并操作.*/;
                #my $mail=$1;
                if ($content=~/.*?请尽快到<(.*)>检查邮件并操作.*/){
                        $mail_list{$id}=$user;
                        print "写入用户u 的邮件1 到文件,完成\n";
                        $u=encode('utf8',$u);
                        print ML "$u\t$id\t$1\n";
                        return 1;
                }else{
                        if($content=~/.*?找不到您输入的用户名.*/){
                                print "该用户".$u."不存在\n";
                        }elsif($content=~/.*?本论坛设置了一个小时之内同一个帐号只能发送一次密码找回邮件.*/){
                                print "用户".$u."在一小时内只能提交一次\n";
                        }else{
                                print "获取用户 $u 出错\n";
                        }
                        return 0;
                }
        }else{
                print "获取当前用户邮件地址失败,失败原因:".$response->status_line;
                return 0;
        }

网页返回内容编码为“x-gbk",这里比较奇怪,不知道x-gbk和gbk是什么区别,只能按gbk来decode了。

匹配汉字可以匹配到,但问题是屏幕上报了许多警告:

Malformed UTF-8 character (overflow at 0x81bcaf2f, byte 0x54, after start byte 0xbf) in pattern match (m//) at ./catch_mail.pl line 76.
Malformed UTF-8 character (overflow at 0x81bcaf2f, byte 0x54, after start byte 0xbf) in pattern match (m//) at ./catch_mail.pl line 76.

如何才能让匹配不报警告,或者说如何不显示警告呢,谢谢!

论坛徽章:
0
2 [报告]
发表于 2010-07-19 17:15 |只看该作者
匹配是可以匹配到的,也拿到了需要的结果,就是报了满屏的警告信息。

论坛徽章:
0
3 [报告]
发表于 2010-07-19 17:57 |只看该作者
估计主要是因为返回页面采用了什么 x-gbk编码的原因。

论坛徽章:
0
4 [报告]
发表于 2010-07-19 18:12 |只看该作者
顶一下,下班,回家再研究。

论坛徽章:
0
5 [报告]
发表于 2010-07-20 09:03 |只看该作者
本帖最后由 黑色阳光_cu 于 2010-07-20 09:55 编辑

不知道x-gbk是什么。哪个网站?
是不是gb18030?

论坛徽章:
0
6 [报告]
发表于 2010-07-20 11:54 |只看该作者
篱芭网的。它大部分页面都是gbk的,就有个页面提交返回后是x-gbk的,perl decode不支持gb18030的,该怎么弄?

论坛徽章:
0
7 [报告]
发表于 2010-07-20 12:09 |只看该作者
use Encode;
use Encode::HanExtra;

decode("gb18030", $text);


要装 Encode::HanExtra

论坛徽章:
0
8 [报告]
发表于 2010-07-20 12:45 |只看该作者
郁闷,换成18030还是一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP