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

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

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

    servlet——編碼處理

    字符編碼基本概念:

    JAVA中通常有char、byte、String這幾個概念。char指的是一個UNICODE字符,為16位的整數(shù)。byte是字節(jié),字符串在網(wǎng)絡(luò)傳輸或存儲前需要轉(zhuǎn)換為byte數(shù)組。在從網(wǎng)絡(luò)接收或從存儲設(shè)備讀取后需要將byte數(shù)組轉(zhuǎn)換成String。String是字符串,可以看成是由char組成的數(shù)組。String和char為內(nèi)存形式,byte是網(wǎng)絡(luò)傳輸或存儲的序列化形式

    編碼方式的簡介

    String序列化成byte數(shù)組或反序列化時需要選擇正確的編碼方式。如果編碼方式不正確,就會得到一些0x3F的值。常用的字符編碼方式有ISO8859_1、GB2312、GBK、UTF-8/UTF-16/UTF-32。ISO8859_1用來編碼拉丁文,它由單字節(jié)(0-255)組成。GB2312、GBK用來編碼簡體中文,它有單字節(jié)和雙字節(jié)混合組成。最高位為1的字節(jié)和下一個字節(jié)構(gòu)成一個漢字,最高位為0的字節(jié)是ASCII碼。UTF-8/UTF-16/UTF-32是國際標(biāo)準(zhǔn)UNICODE的編碼方式。   用得最多的是UTF-8,主要是因為它在對拉丁文編碼時節(jié)約空間。

    Java SE API中關(guān)于編碼操作的常用方法

    String str = "中國";
    // 取得GB2312編碼的字節(jié)
    byte[] bytesGB2312 = str.getBytes("GB2312");
    // 取得平臺缺省編碼的字節(jié)(windows為GB2312)
    byte[] bytesDefault = str.getBytes();
    // 用指定的編碼將字節(jié)轉(zhuǎn)換成字符串
    String newStr = new String(bytesGB2312, "GB2312");
    // 用平臺缺省的編碼將字節(jié)轉(zhuǎn)換成字符串(solaris為ISO8859_1,windows為GB2312)
    String newDefaultStr = new String(bytesDefault);
    // 用指定的編碼從字節(jié)流里面讀取字符
    InputStream in = new FileInputStream(new File("1.txt"));
    InputStreamReader reader = new InputStreamReader(in, "GB2312");
    char aChar = (char) reader.read();
    當(dāng)通過瀏覽器向tomcat發(fā)出請求訪問servlet時,服務(wù)器將請求信息和響應(yīng)信息封裝在request和response對象交給響應(yīng)的servlet處理,程序中的字符串默認(rèn)按ISO-8859的查找和輸出
    案例1.
    提交頁面編碼為:GBKimage
    servlet編碼為系統(tǒng)默認(rèn)
    String username = request.getParameter("username");
    imageSystem.out.println(username); 
    結(jié)果如圖
    分析如下,當(dāng)request.getParameter("username");獲得客戶端表image單信息時,默認(rèn)安裝ISO-8859的編碼解碼,然后輸出到控制臺,出現(xiàn)字符編碼不一致產(chǎn)生亂碼
    解決辦法 是在servlet方法頭部添加
    request.setCharacterEncoding("GBK");
    如圖

    案例2.image

    例如:對于輸出:response.getwrite().write("中國"),在瀏覽器中顯示亂碼:  
    應(yīng)為response.getwrite().write("中國"),默認(rèn)按照ISO-8859編碼響應(yīng)服務(wù)器發(fā)送“中國”,而我們用的瀏覽器默認(rèn)為GBK或GB2312編碼,從而導(dǎo)致編碼不同產(chǎn)生亂碼

    解決辦法:

    //設(shè)置resposne的碼表image
    response.setCharacterEncoding("UTF-8");

    //并且要通知瀏覽器以相應(yīng)格式打開:
    response.setContentType("text/html;charset=UTF-8");

     

    posted on 2010-04-23 23:28 braden 閱讀(2614) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    <2010年4月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩精品免费在线视频| 牛牛在线精品免费视频观看| 日本高清不卡aⅴ免费网站| 亚洲色图综合在线| 搜日本一区二区三区免费高清视频| 日韩精品免费一区二区三区| 美丽的姑娘免费观看在线播放| 亚洲线精品一区二区三区影音先锋 | 美女尿口扒开图片免费| 五月婷婷亚洲综合| 国产免费久久久久久无码| 亚洲韩国精品无码一区二区三区 | 亚洲免费观看视频| 亚洲av中文无码乱人伦在线r▽| 久久午夜伦鲁片免费无码| 亚洲精品高清国产麻豆专区| 成人性生交大片免费看无遮挡 | 亚洲国产一区明星换脸| 一级成人a免费视频| 亚洲激情中文字幕| 久久经典免费视频| 含羞草国产亚洲精品岁国产精品| 亚洲国产精品狼友中文久久久| a级毛片毛片免费观看久潮喷| 亚洲日产2021三区| 成年美女黄网站18禁免费| 高清免费久久午夜精品| 亚洲AV人人澡人人爽人人夜夜| 麻豆最新国产剧情AV原创免费 | 亚在线观看免费视频入口| 亚洲中文无码av永久| 国产jizzjizz免费视频| 久久精品私人影院免费看| 亚洲熟妇无码一区二区三区导航| 亚洲第一区在线观看| 久久午夜羞羞影院免费观看 | 91精品国产亚洲爽啪在线影院| 毛片高清视频在线看免费观看| 成全视成人免费观看在线看| 久久久久精品国产亚洲AV无码| 亚洲爽爽一区二区三区|