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

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

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

    Ordinary hut

    人間一福地,勝似天仙宮
    posts - 61, comments - 50, trackbacks - 0, articles - 1

    關(guān)于web開發(fā)過程中的編碼

    Posted on 2011-03-02 15:51 landor 閱讀(565) 評(píng)論(0)  編輯  收藏 所屬分類: jsp、servletajax
    1 瀏覽器會(huì)根據(jù)content="text/html; charset=gbk"來解析該用什么編碼來把這些字節(jié)流decode成字符串,并顯示;
    2 當(dāng)客戶端提交表單的時(shí)候,比如以post方式提交,瀏覽器同樣會(huì)根據(jù)上面的編碼,把這些字符串encode成字節(jié)流,發(fā)送到服務(wù)端;
    3 在服務(wù)端,默認(rèn)就會(huì)認(rèn)為傳過來的東西就是ASCii碼,沒別的,也就是ISO-8859-1,所以它就去decode,ISO-8859-1中根本沒有中文漢字對(duì)應(yīng)的二進(jìn)制碼,沒找到,就亂了應(yīng)該是一堆口吧;
    4 解決辦法是加一個(gè)過濾器,比如gbk,那就設(shè)置成request.setCharacterEncoding("GBK");這樣服務(wù)端在獲取字符串的時(shí)候,就用GBK去decode這個(gè)二進(jìn)制流了;
    5 如果是ajax,問題又來了,因?yàn)閍jax只支持utf-8編碼格式,過程應(yīng)該是這樣:
        a 瀏覽器通過ajax像server端post數(shù)據(jù)時(shí),ajax自動(dòng)將瀏覽器中的文字用utf-8 encode成二進(jìn)制流,然后發(fā)送到server端;
        b server端如果配置的filter是gbk,那么會(huì)用gbk去decode這個(gè)二進(jìn)制流,顯然亂麻;但是不應(yīng)該是一堆口,因?yàn)樗麘?yīng)該根據(jù)二進(jìn)制流的每兩位字節(jié),在GBK編碼表中能找到對(duì)應(yīng)的內(nèi)容,具體的內(nèi)容是簡體文字還是繁體文字還是其他的,就不一定了;
            此時(shí)要是偶數(shù)個(gè)漢字還好(可以把它用gbk進(jìn)行encode,然后用utf-8進(jìn)行decode,這樣就還原回來了),
            如果是奇數(shù)個(gè)漢字就出現(xiàn)丟失了(因?yàn)橐粋€(gè)字符用UTF-8 encode后為3個(gè)字節(jié),如果三個(gè)字符被encode之后,就是9個(gè)字節(jié),當(dāng)用gbk進(jìn)行decode 的時(shí)候,gbk是用2個(gè)字節(jié),結(jié)果剩下了一個(gè)字節(jié),這個(gè)字節(jié)在gbk的編碼表中不存在(因?yàn)間bk編碼表都是2個(gè)字節(jié)的),所以就用?號(hào)填充了)。
        c 所以必須在服務(wù)端的fiter中對(duì)ajax請(qǐng)求進(jìn)行判斷,用jquery為例:
    $.ajax({
        
        contentType:
    "application/x-www-form-urlencoded;charset=utf-8",

    在server端的filter中,可以判斷charset是不是空,如果加上上面的代碼,那么charset就是utf-8,代碼如下:
    if (request.getCharacterEncoding() == null) {
        request.setCharacterEncoding(this.encoding);//正常提交請(qǐng)求時(shí)候,charset是空的,也就是說request.getCharacterEncoding()是空的;
    }

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


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 久久亚洲sm情趣捆绑调教| 国产又黄又爽又猛的免费视频播放| 亚洲AV无码一区二三区| 国产92成人精品视频免费| 国产成人无码综合亚洲日韩| 人成午夜免费大片在线观看| 亚洲成a人一区二区三区| 国产精品亚洲一区二区在线观看 | 国产区卡一卡二卡三乱码免费| 在线亚洲高清揄拍自拍一品区| 免费在线观看h片| 色老板亚洲视频免在线观| 色天使色婷婷在线影院亚洲| 大学生a级毛片免费观看 | 亚洲性色成人av天堂| 欧洲乱码伦视频免费| 亚洲综合无码无在线观看| 国产乱色精品成人免费视频| 深夜福利在线视频免费| 亚洲精品乱码久久久久66| 久久国产精品免费看| 亚洲国产精品乱码在线观看97| 久久不见久久见中文字幕免费| 激情小说亚洲图片| 夜夜春亚洲嫩草影院| 57pao国产成永久免费视频| 亚洲国产一区在线观看| 国产一区视频在线免费观看| 中文字幕久无码免费久久| 久久精品国产亚洲精品2020| 99精品国产免费久久久久久下载| 午夜亚洲WWW湿好爽| 在线a亚洲v天堂网2019无码| 日本亚洲免费无线码| 污污免费在线观看| 亚洲va国产va天堂va久久| 在线视频免费观看高清| 一级特级女人18毛片免费视频| 久久亚洲AV无码精品色午夜麻豆| 日本黄色免费观看| 国产色无码精品视频免费|