免费注册 查看新帖 |

Chinaunix

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

关于中文显示乱码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-31 16:10 |只看该作者 |倒序浏览
本帖最后由 zhou20071801 于 2012-08-31 16:12 编辑

在论坛看到有人发了一个提取网页图片的帖子(http://bbs.chinaunix.net/thread-3766254-1-1.html),稍微做了一些修改,但是保存图片的时候图片名字乱码。但是如果我把从网页提取得到的源码(源码.txt)通过UE转换为ANSI/ASCLL格式后再运行之后的下载图片部分的代码可以显示中文。求解决方法或者保存为ANSI/ASCLL格式的代码。
  1. use strict;
  2. use LWP::Simple;
  3. my $content;
  4. print "请输入网址:";
  5. chomp(our $soure=<STDIN>);
  6. my $url="http://$soure";
  7. $content = get($url) or die "Couldn't get it!\n";
  8. mkdir("c:\\网页图片\\$soure",0777);#以网站名字为名创建文件夹
  9. open CONFIG,">c:\\网页图片\\$soure\\源码.txt";
  10. print CONFIG"$content";
  11. close CONFIG;
  12. open RF,"<C:\\网页图片\\$soure\\源码.txt";
  13. my @img;
  14. our %hash;
  15. our $i=0;
  16. while(my $line=<RF>)
  17. {
  18.         #提取图片地址和名-----------------------------------------------------------------------
  19.         if($line=~m/\<img.*?alt=\"(.*?)\".*?src=\"(.*?((\.gif)|(\.jpg)|(\.png)|(\.swf)))\"/)
  20.         {
  21.                 my $src=$2;
  22.                 my $alt=$1;
  23.                 $i++;
  24.                 my @array=split/\./,$src;#提取后缀
  25.                 my $houzui=pop @array;
  26.                 my $name="$alt$i\.$houzui";
  27.                 $hash{$src}=$name;       
  28.         }
  29.         elsif($line=~m/\<img.*?src=\"(.*?((\.gif)|(\.jpg)|(\.png)|(\.swf)))\".*?alt=\"(.*?)\"/)
  30.         {
  31.                 my $src=$1;
  32.                 my $alt=$2;
  33.                 $i++;
  34.                 my @array=split/\./,$src;#提取后缀
  35.                 my $houzui=pop @array;
  36.                 my $name="$alt$i\.$houzui";
  37.                 $hash{$src}=$name;       
  38.         }
  39.        #-------------------------------------------------------------------------------------------
  40. }
  41. while( (my $Url,my $name) = each(%hash) )
  42.         {
  43.                 print"$name\n";
  44.                 getstore($Url,"C:\\网页图片\\$soure\\$name") or die "get picture failed!";  #下载图片
  45.         }
复制代码
网页的html文件格式为<img width="130" height="75" src="http://img1.gtimg.com/tech/pics/hv1/54/202/1127/73334739.jpg" alt="360搜索借尸魂">src后面是图片网址 alt后面是图片名称(腾讯网和新浪网是这样的其他没看)。

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2012-08-31 16:16 |只看该作者
字符编码问题,根据需要进行转码
  1. use Encode qw( encode decode );
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-08-31 16:45 |只看该作者
非常感谢!!加了$content= encode("euc-cn",$content);之后显示中文了回复 2# cdtits


   

论坛徽章:
0
4 [报告]
发表于 2012-08-31 22:18 |只看该作者
之前在插数据库的时候也 这样encode("euc-cn",$content) 这样转换过一次~~   

论坛徽章:
0
5 [报告]
发表于 2012-09-03 21:39 |只看该作者
回复 4# xiyoulaoyuanjia


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP