<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-295  評論-26  文章-1  trackbacks-0

    最近發現用htmlparser解析一些網頁時,繁體中文會變成亂碼.分析了下原因,發現在用stringbean的時候htmlparser會自己根據meta來決定用哪種內碼來解碼,而有的網站在meta中是用gb2312來做charset,實際應用的時候又用到了gbk.gb2312是不能表示繁體的,所以就出現了亂碼.解決的辦法很簡單,gbk是兼容gb2312的,所以在htmlparser的page.java的getcharser()那里加一句判斷,如果ret是gb2312就設置為gbk,這樣問題就解決了.?

    修改的page.java的代碼如下(/lexer/page.java)


    ??? public String getCharset (String content)
    ??? {
    ??????? final String CHARSET_STRING = "charset";
    ??????? int index;
    ??????? String ret;

    ??????? if (null == mSource)
    ??????????? ret = DEFAULT_CHARSET;
    ??????? else
    ??????????? // use existing (possibly supplied) character set:
    ??????????? // bug #1322686 when illegal charset specified
    ??????????? ret = mSource.getEncoding ();
    ??????? if (null != content)
    ??????? {
    ??????????? index = content.indexOf (CHARSET_STRING);

    ??????????? if (index != -1)
    ??????????? {
    ??????????????? content = content.substring (index +
    ??????????????????? CHARSET_STRING.length ()).trim ();
    ??????????????? if (content.startsWith ("="))
    ??????????????? {
    ??????????????????? content = content.substring (1).trim ();
    ??????????????????? index = content.indexOf (";");
    ??????????????????? if (index != -1)
    ??????????????????????? content = content.substring (0, index);

    ??????????????????? //remove any double quotes from around charset string
    ??????????????????? if (content.startsWith ("\"") && content.endsWith ("\"")
    ??????????????????????? && (1 < content.length ()))
    ??????????????????????? content = content.substring (1, content.length () - 1);

    ??????????????????? //remove any single quote from around charset string
    ??????????????????? if (content.startsWith ("'") && content.endsWith ("'")
    ??????????????????????? && (1 < content.length ()))
    ??????????????????????? content = content.substring (1, content.length () - 1);

    ??????????????????? ret = findCharset (content, ret);

    ??????????????????? // Charset names are not case-sensitive;
    ??????????????????? // that is, case is always ignored when comparing
    ??????????????????? // charset names.
    //??????????????????? if (!ret.equalsIgnoreCase (content))
    //??????????????????? {
    //??????????????????????? System.out.println (
    //??????????????????????????? "detected charset \""
    //??????????????????????????? + content
    //??????????????????????????? + "\", using \""
    //??????????????????????????? + ret
    //??????????????????????????? + "\"");
    //??????????????????? }
    ??????????????? }
    ??????????? }
    ??????? }
    ??????? if(ret.equalsIgnoreCase("gb2312"))ret="GBK"; //to avoid decode problem
    ??????????????????????????????????????????????????????????????????????????????????????? ? ?//edited by linyunfan
    ??????? return (ret);
    ??? }

    ?

    在最后加入了這句

    ??????? if(ret.equalsIgnoreCase("gb2312"))ret="GBK";



    大盤預測 國富論
    posted on 2008-10-09 13:33 華夢行 閱讀(1778) 評論(3)  編輯  收藏

    評論:
    # re: htmlparser解析一些網頁時,繁體中文會變成亂碼 2008-12-28 22:01 | 繁體
    .。。  回復  更多評論
      
    # re: htmlparser解析一些網頁時,繁體中文會變成亂碼 2009-03-11 15:45 | pnut
    不錯。完全可以!
    用parser.setEncoding("gbk")是不起作用的,程序運行時會用所抓網頁的“charset”覆蓋的。
    gbk是gb2312的超集,所以用gbk去處理gb2312的網頁完全沒有問題,事實上,眾多網頁上所寫的gb2312是不嚴謹的,IE也總是會忽略它而用gbk去展示的。但目前現狀是很多網站都在寫gb2312,用博主的辦法處理是個好主意。
    補充一下,Page.java在httplexer.jar里,源碼可以去“http://sourceforge.net/projects/htmlparser/” 下載  回復  更多評論
      
    # re: htmlparser解析一些網頁時,繁體中文會變成亂碼[未登錄] 2011-08-07 15:53 | 小武
    我改成樓主說的那樣了,還是不得呢?
    QQ:1161008015 可以加我qq交流一下嘛。  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 男人j进女人p免费视频| 亚洲AV无码乱码在线观看代蜜桃 | 四虎成人免费大片在线| 久久亚洲AV成人无码电影| 华人在线精品免费观看| 亚洲人成网7777777国产| 一级中文字幕免费乱码专区 | 韩国免费一级成人毛片| 亚洲美女自拍视频| 国产大片免费网站不卡美女| 亚洲av纯肉无码精品动漫| 久久久久久99av无码免费网站| 亚洲中字慕日产2020| 久久久久免费看黄A片APP| 亚洲色精品VR一区区三区| 日本成人在线免费观看| 最新亚洲人成无码网www电影| 免费看一级做a爰片久久| 黄 色一级 成 人网站免费| 亚洲级αV无码毛片久久精品| 玖玖在线免费视频| 亚洲经典在线中文字幕| 青青久在线视频免费观看| 国产精品国产亚洲区艳妇糸列短篇| 四虎精品亚洲一区二区三区| 久青草视频在线观看免费| 久久丫精品国产亚洲av不卡| 免费看美女裸露无档网站| 国产精品日本亚洲777| 红杏亚洲影院一区二区三区| 久久久久国产精品免费看| 亚洲最大成人网色香蕉| 国产大片线上免费看| 中国性猛交xxxxx免费看| 亚洲制服中文字幕第一区| 岛国片在线免费观看| 精品国产免费一区二区三区| 亚洲视频精品在线观看| 免费在线视频一区| 日韩免费无码一区二区三区 | 好大好硬好爽免费视频|