亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12
最近訪問板塊 發(fā)新帖
樓主: sx98083714
打印 上一主題 下一主題

求用WWW::Mechanize模塊提交表單,字段為中文提交后亂碼的解決辦法? [復(fù)制鏈接]

論壇徽章:
0
11 [報(bào)告]
發(fā)表于 2010-09-05 18:00 |只看該作者
Perl有部分模塊對(duì)中文支持不到位,比如GD,樓主的問題也可能是因?yàn)閃WW::Mechanize對(duì)中文支持不好。用LWP實(shí)現(xiàn)了一下,代碼有點(diǎn)啰嗦,將就一下吧:
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;
  4. use LWP;
  5. use HTTP::Cookies;
  6. use HTTP::Response;
  7. use LWP::ConnCache;
  8. use Encode;

  9. my $username = "abcdef";
  10. my $password = "123456";
  11. my $recipient = "美女";
  12. my $topic = "測(cè)試 by 立虻 20100905";
  13. my $content = "明月幾時(shí)有,把酒問清天,不知天上宮闕,今夕是何年!";

  14. my $lwp = LWP::UserAgent->new;
  15. my $conncache = new LWP::ConnCache;
  16. $lwp->conn_cache($conncache);

  17. ######################## LOGIN #########################
  18. my $login_url = "http://passport.libaclub.com/login.php?act=submit";
  19. my %login_form = (
  20.         "username" => $username,
  21.         "password" => $password,
  22. );
  23. my $login_response = $lwp->post($login_url,\%login_form);
  24. my $login_cookie;
  25. my $sessionhash;
  26. if ($login_response->is_success) {
  27.         my $cookie_jar = HTTP::Cookies->new;
  28.         $cookie_jar->extract_cookies($login_response);
  29.          my $cookie_temp = $cookie_jar->as_string();
  30.          ($sessionhash) = ($cookie_temp =~ /.*?sessionhash=(.*?)\;.*/i);
  31.          ($login_cookie) = ($cookie_temp =~ /Set-Cookie3: (.*)/i);
  32.          chomp($login_cookie);
  33. }
  34. else {
  35.         print "Login Error: ".$login_response->status_line;
  36. }
  37. #print "sessionhash: $sessionhash\n";

  38. ######################## GET FORM URL #########################
  39. my $form_url = "http://bbs.sh.libaclub.com/message.php?action=write";
  40. $lwp->default_header('Cookie'=>$login_cookie);
  41. my $form_response = $lwp->get($form_url);
  42. my $passid;
  43. if ($form_response->is_success) {
  44.         my $cookie_jar = HTTP::Cookies->new;
  45.         $cookie_jar->extract_cookies($form_response);
  46.          my $cookie_temp = $cookie_jar->as_string();
  47.         ($passid) = ($cookie_temp =~ /.*?PHPSESSID=(.*?)\;.*/i);
  48. }
  49. else {
  50.         print "Form url request error: ".$form_response->status_line;
  51. }
  52. #print "passid $passid\n";

  53. ######################## SEND MESSAGE #########################
  54. my $send_url = "http://bbs.sh.libaclub.com/message.php?action=doSend";
  55. my %send_form = (
  56.          "name" => "form1",
  57.          "receiverName" => $recipient,
  58.          "topic" => $topic,
  59.          "content" => $content,
  60. );
  61. my $send_cookie = qq~ sessionhash=$sessionhash; PHPSESSID=$passid~;
  62. #print "Send_Cookie $send_cookie\n";
  63. $lwp->default_header('Cookie'=>$send_cookie);
  64. my $send_response = $lwp->post($send_url,\%send_form);
  65. if ($send_response->is_success) {
  66.         my $html = $send_response->decoded_content;
  67.         if (encode('gbk',$html) =~ /發(fā)送成功/) {
  68.                  print "Data send sucessful!";
  69.          }
  70.          else { print "Data send failed!"; }
  71. }
  72. else {
  73.         print "Data send error: ".$send_response->status_line;
  74. }
  75. print "\7";

  76. <STDIN>;
復(fù)制代碼

論壇徽章:
0
12 [報(bào)告]
發(fā)表于 2010-09-05 22:17 |只看該作者
本帖最后由 lanparky 于 2010-09-05 22:27 編輯

這是由于提交時(shí)HTML::Form自動(dòng)編碼的問題,如果沒有指定編碼格式,默認(rèn)是utf-8,如果指定了gbk,接收的地址必須有對(duì)應(yīng)的解碼程序才可以正常顯示中文.所以修改下模塊HTML::Form (先把文件的只讀取消),在HTML::Form里找到
  1. eval { require Encode };
  2. $Encode_available = !$@;
復(fù)制代碼
在后面加上
  1. $Encode_available=0;
復(fù)制代碼
把HTML:Form自動(dòng)編碼的功能關(guān)閉.提交程序代碼改為

  1. use WWW::Mechanize;
  2. use Encode;
  3. use LWP::ConnCache;


  4. $url="http://bbs.sh.libaclub.com/message.php?action=write";

  5. my $mech=WWW::Mechanize->new();
  6. $mech->conn_cache(LWP::ConnCache->new);
  7. $mech->agent_alias('Windows IE 6');
  8. $mech->add_header(Referer=>' http://bbs.sh.libaclub.com/message.php');
  9. $mech->add_header("Accept-Charset" =>'GBK;q=0.7,*;q=0.7');
  10. $mech->add_header("Accept-Language"=>'zh-cn;q=0.5');

  11. $mech->add_header(Cookie=>'sessionhash=fa55180844a4152e93b64fc17482b53f; __utma=87665927.1972509085.1283527516.1283616492.1283653233.7; __utmz=87665927.1283527516.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=87665927; mytopictabs=0; navtoptabs=0; PHPSESSID=1c4aafe2bad88da7cb26b89cd514dd42; __utmb=87665927.6.10.1283653233');
  12. $mech->get($url);
  13. my $res = $mech->res;
  14. ##關(guān)閉decoded_content會(huì)自動(dòng)解碼,把返回的內(nèi)容按頁(yè)面原樣輸出
  15. $html= $res->decoded_content(charset => 'none');
  16. $mech->update_html( $html );
  17. $form=$mech->form_name("form1");  
  18. $mech->field("receiverName","sx98083714");
  19. my $subject="測(cè)試題目";
  20. $mech->field("topic",$subject);
  21. my $content="明月幾時(shí)有,把酒問清天,不知天上宮闕,今夕是何年!";
  22. $mech->field("content",$content);
  23. $mech->submit();
  24. $res = $mech->res;
  25. $html= $res->decoded_content(charset => 'none');
  26. $mech->update_html( $html );
  27. print $mech->dump_all();  
復(fù)制代碼

論壇徽章:
0
13 [報(bào)告]
發(fā)表于 2010-09-05 22:29 |只看該作者
特感謝 iamlimeng  、lanparky 兩位兄弟的熱心相助。!

感謝之情不知如何言表,剛好快中秋了,祝二位兄弟中秋節(jié):全家團(tuán)圓,工作順利!。
12
返回列表 發(fā)新帖
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP