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

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

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

    真善美

    勇于承擔(dān)責(zé)任; 如果你做不到,要提前跟別人說明,不要等到事情發(fā)生后再解釋。

      BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理 ::
      55 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks
    【轉(zhuǎn)】http://jiangzhengjun.javaeye.com/blog/508079
    客戶端編碼
    :雖然采用的POST方式請求,但是參數(shù)是附加在URL后面的,結(jié)果就是附加在URL后面的參數(shù)還是以GET方式傳遞。又encodeURIComponent()函數(shù)是以UTF-8編碼方式對內(nèi)容進行編碼,經(jīng)過此函數(shù)編碼后的附加參數(shù)的值就以UTF-8傳送到服務(wù)器。
    服務(wù)器解碼:因為Tomcat的<Connector/>標簽未設(shè)置URIEncoding與useBodyEncodingForURI這兩個屬性,所以Tomact對URL后的附加參數(shù)采用默認的編碼方式ISO8859-1進行編碼。
    最后結(jié)論:客戶端編碼方式(UTF-8)與服務(wù)器解碼方式(ISO8859-1)不同導(dǎo)致了亂碼。

    [轉(zhuǎn)]http://jiangzhengjun.javaeye.com/blog/509605    
    escape()方法
    采用ISO Latin字符集對指定的字符串進行編碼。所有的空格符、標點符號、特殊字符以及其他非ASCII字符都將被轉(zhuǎn)化成%xx格式的字符編碼(xx等于該字符在字符集表里面的編碼的16進制數(shù)字)。比如,空格符對應(yīng)的編碼是%20,如果是中文,則使用unicode編碼格式如 %uxxxx。
    unescape方法與此相反。不會被此方法編碼的字符有69個:@*_+-./ ,0-9,a-z,A-Z

    encodeURI() 方法
    把URI字符串采用UTF-8編碼格式轉(zhuǎn)化成escape格式的字符串。encodeURI不編碼字符有82個:~!@#$&*()_+:?-=;',./,0-9,a-z,A-Z

    encodeURIComponent() 方法
    把URI字符串采用UTF-8編碼格式轉(zhuǎn)化成escape格式的字符串。與encodeURI()相比,這個方法將對更多的字符進行編碼,比如 / 等字符。所以如果字符串里面包含了URI的幾個部分的話,不能用這個方法來進行編碼,否則 / 字符被編碼之后URL將顯示錯誤。不會被此方法編碼的字符71個:~!*()_-'.,0-9,a-z,A-Z


    POST方式下的特殊字符轉(zhuǎn)換
    隨便說說表單以POST方式提交時,表單元素值中的一些字符也會轉(zhuǎn)換,但以下不做轉(zhuǎn)換:+@*_-. ,a-z A-Z 0-9 ,要轉(zhuǎn)換的字符會先用瀏覽器的編碼方式時行編碼,然后把編碼轉(zhuǎn)換成%xx(xx為兩位的十六進制)形式參數(shù)串后傳送到服務(wù)器。

    Java中的URLEncoder.encode(String s, String enc) /URLDecoder.decode(String s, String enc)編碼方式
    Java中的URLEncoder.encode(String s, String enc) /URLDecoder.decode(String s, String enc)機制:它們與JavaScript中的encodeURI、encodeURIComponent函數(shù)在編碼方式上是不一樣的。encodeURI、encodeURIComponent用的是UTF-8,是不能更改的。但Java里的編解碼函數(shù)不一定是UTF-8,這里的編碼與運行的環(huán)境是有關(guān)系的,默認情況下,在Tomcat5.5下是以ISO8859-1來解碼URL中傳遞過來的參數(shù)的,但也可以設(shè)置URL的編碼方式,比如Tomcat中設(shè)置URIEncoding與useBodyEncodingForURI屬性是可以的,具體實例請看《HTTP碼流與Jsp亂碼問題的分析(一)》(http://jiangzhengjun.javaeye.com/blog/508079)中的URLEncoder.encode()部分。

     

    URLEncoder.encode(String s, String enc) 對 String 編碼時,使用以下規(guī)則:

    字母數(shù)字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不變。
    特殊字符 "."、"-"、"*" 和 "_" 保持不變。
    空格字符 " " 轉(zhuǎn)換為一個加號 "+"。
    所有其他字符都是不安全的,因此首先使用一些編碼機制將它們轉(zhuǎn)換為一個或多個字節(jié)。然后每個字節(jié)用一個包含 3 個字符的字符串 "%xy" 表示,其中 xy 為該字節(jié)的兩位十六進制表示形式。推薦的編碼機制是 UTF-8。但是,出于兼容性考慮,如果未指定一種編碼,則使用相應(yīng)平臺的默認編碼。
    例如,使用 UTF-8 編碼機制,字符串 "The string ü@foo-bar" 將轉(zhuǎn)換為 "The+string+%C3%BC%40foo-bar",因為在 UTF-8 中,字符 ü 編碼為兩個字節(jié),C3 (十六進制)和 BC (十六進制),字符 @ 編碼為一個字節(jié) 40 (十六進制)。

     

    URLDecoder.decode(String s, String enc) 轉(zhuǎn)換過程正好與 URLEncoder 類使用的過程相反。假定已編碼的字符串中的所有字符為下列之一:"a" 到 "z"、"A" 到 "Z"、"0" 到 "9" 和 "-"、"_"、"." 以及 "*"。允許有 "%" 字符,但是將它解釋為特殊轉(zhuǎn)義序列的開始。

    轉(zhuǎn)換中使用以下規(guī)則:

    字母數(shù)字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不變。
    特殊字符 "."、"-"、"*" 和 "_" 保持不變。
    加號 "+" 轉(zhuǎn)換為空格字符 " "。
    將把 "%xy" 格式序列視為一個字節(jié),其中 xy 為 8 位的兩位十六進制表示形式。然后,所有連續(xù)包含一個或多個這些字節(jié)序列的子字符串,將被其編碼可生成這些連續(xù)字節(jié)的字符所代替。可以指定對這些字符進行解碼的編碼機制,或者如果未指定的話,則使用平臺的默認編碼機制。

    本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/jjjsss82/archive/2009/12/13/4940513.aspx



    JSP頁面?zhèn)髦担?br /> function doAdd()
    {var url = "method=add&value="+encodeURI(frm.xx.value);
        var request = newXMLHttpRequest();
        request.onreadystatechange = getReadyStateHandler(request,alertResult);
        request.open("POST", "ssAction.do", true);
        request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=GBK");
        request.send(url);
    }
    Action取值:
        public String add(ActionForm form, HttpServletRequest request, HttpServletResponse response)
                throws IOException
        {
            response.setContentType("text/html; charset=GBK");
            PrintWriter write = response.getWriter();
            try
            {
                VO vo = new VO();
                vo.setValue(URLDecoder.decode(request.getParameter("value"),"utf-8"));
                write.print("success");
            }
            catch (Throwable e)
            {
                write.print("error:" + e.getMessage());
            }
            return null;
        }

    jsp編碼方式:瀏覽器中右鍵--編碼-- UTF-8(默認)


    posted on 2010-11-05 16:01 真善美 閱讀(739) 評論(0)  編輯  收藏
    主站蜘蛛池模板: 日本阿v免费费视频完整版| 精品视频在线免费观看| 好爽…又高潮了毛片免费看| 亚洲精品无码久久毛片波多野吉衣| 91视频免费观看高清观看完整| 色噜噜AV亚洲色一区二区| 有码人妻在线免费看片| 国产精品亚洲视频| 久久九九免费高清视频| 亚洲国产精品无码专区影院| 色www永久免费网站| 亚洲AV人无码综合在线观看| 8x网站免费入口在线观看| 亚洲经典在线观看| 免费精品人在线二线三线区别| 亚洲色少妇熟女11p| 国产精品99久久免费| h视频免费高清在线观看| 国产亚洲精久久久久久无码77777| a毛片免费全部播放完整成| 亚洲嫩模在线观看| 男人的好免费观看在线视频| 亚洲av综合日韩| 美腿丝袜亚洲综合| 啦啦啦完整版免费视频在线观看 | 日本视频一区在线观看免费| 亚洲国产成AV人天堂无码| 四色在线精品免费观看| 一个人看的在线免费视频| 亚洲AV无码成人专区片在线观看| h片在线免费观看| 国产成人高清亚洲一区久久| 亚洲中文字幕无码一久久区| 最近的中文字幕大全免费8| 亚洲av综合av一区二区三区| 亚洲日韩欧洲乱码AV夜夜摸| 欧洲乱码伦视频免费| 丰满妇女做a级毛片免费观看 | 亚洲午夜国产精品无码老牛影视| 久久WWW免费人成一看片| 免费的黄网站男人的天堂|