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

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

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

    posts - 241,  comments - 116,  trackbacks - 0
    昨天用java抓取html文件,獲取下來的html文件打開總是帶有亂碼,弄了半天搞定了。其實(shí)要避免亂碼的一個(gè)好方法:沒有必要去判斷頁面的編碼方式,只要讀取的數(shù)據(jù)按字節(jié)(而不是按字符)保存起來就可以了,后綴為html文件,然后用瀏覽器打開,肯定是正常的。
    分析的原因:在網(wǎng)絡(luò)上傳送的數(shù)據(jù)是基于字節(jié)流的,我們要在屏幕上顯示的時(shí)候要將字節(jié)流按某種字符集解碼成String的形式,在java中就是將字節(jié)流按某種格式解碼成Unicode,在將數(shù)據(jù)寫入文件的時(shí)候,又要將String按某種格式編碼成字節(jié)流,當(dāng)兩次的編碼不一致的時(shí)候,就會(huì)造成亂碼。所以在抓取網(wǎng)頁進(jìn)行保存的時(shí)候,可以直接將得到的字節(jié)流保存到文件中就可以了。
    字節(jié)流與字符流主要的區(qū)別是他們的的處理方式:
    字節(jié)流是最基本的,所有的InputStream和OutputStream的子類都是,主要用在處理二進(jìn)制數(shù)據(jù),它是按字節(jié)來處理的。
    實(shí)際中很多的數(shù)據(jù)是文本,又提出了字符流的概念,它是按虛擬機(jī)的encode來處理,也就是要進(jìn)行字符集的轉(zhuǎn)化。
    在實(shí)際開發(fā)中出現(xiàn)的亂碼問題實(shí)際上都是在字符流和字節(jié)流之間轉(zhuǎn)化不統(tǒng)一而造成的。
    注:URLConnection的連接、超時(shí)、關(guān)閉用法總結(jié)對(duì)于我們常用的GBK中,英文是占用1個(gè)字節(jié),中文是2個(gè);
    對(duì)于UTF-8,英文是1個(gè),中文是3個(gè);
    對(duì)于Unicode,英文中文都是2個(gè)。
    下面一段代碼是用來抓取并保存到本地的java程序。
    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.net.MalformedURLException;

    import java.net.URL;

     

    public class Test {

    public static void main(String[] argc) {

    URL url = null;

    FileOutputStream fos = null;

    InputStream is;

    try {

    for (int i = 0; i < 1; i++) {

    url = new URL("http://tomfish88.iteye.com/");

    byte bytes[] = new byte[1024 * 1000];

    int index = 0;

    is = url.openStream();

    int count = is.read(bytes, index, 1024 * 100);

    while (count != -1) {

    index += count;

    count = is.read(bytes, index, 1);

    }

    fos = new FileOutputStream("test.html");

    System.out.println(index);

    fos.write(bytes, 0, index);

    is.close();

    fos.close();

    }

    } catch (MalformedURLException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }
     
    posted on 2011-06-28 09:52 墻頭草 閱讀(1174) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
    主站蜘蛛池模板: 成人午夜视频免费| yellow免费网站| 久草视频在线免费| 亚洲国产精品lv| 3d动漫精品啪啪一区二区免费| 亚洲第一区香蕉_国产a| 亚欧日韩毛片在线看免费网站| 亚洲AV无码久久精品蜜桃| 青青青国产手机频在线免费观看| 国产成人精品日本亚洲网站| 一个人免费视频在线观看www| 亚洲成熟xxxxx电影| 最近2019免费中文字幕6| 久久亚洲最大成人网4438 | 国产真人无码作爱免费视频| 亚洲中文字幕无码一区| 国产免费拔擦拔擦8X高清在线人| 亚洲国产成人久久精品影视| 国产曰批免费视频播放免费s| 最新亚洲春色Av无码专区| 四虎永久在线精品免费观看地址| 一级毛片高清免费播放| 亚洲av永久无码精品秋霞电影影院| 99久久免费观看| 亚洲欧美乱色情图片| 亚洲国产午夜福利在线播放| 国内精品免费久久影院| 亚洲国产成人精品无码一区二区| 成人激情免费视频| 国产精品福利在线观看免费不卡| 亚洲avav天堂av在线不卡| 岛国av无码免费无禁网站| 久青草国产免费观看| 亚洲日韩乱码久久久久久| 国产成人精品免费视频软件| 97国免费在线视频| 精品国产成人亚洲午夜福利| 亚洲A∨精品一区二区三区| 色猫咪免费人成网站在线观看| 亚洲av无码专区首页| 亚洲AV无码久久精品蜜桃|