在线看片电视剧免费看,精品国产一区二区三区2021,99久久久无码国产精品免费,精品人妻少妇嫩草AV无码专区

    電話(huà)

    0411-39943997

仟億科技
客服中心
  • 電話(huà)
  • 電話(huà)咨詢(xún):0411-39943997
  • 手機
  • 手機咨詢(xún):15840979770
    手機咨詢(xún):13889672791
網(wǎng)絡(luò )營(yíng)銷(xiāo) >更多

URL編碼以及GET和POST提交亂碼解決方案

作者:billionnet 發(fā)布于:2012/4/24 18:17:09 點(diǎn)擊量:

URL編碼是一種瀏覽器用來(lái)打包表單輸入的格式,瀏覽器從表單中獲取所有的name和其對應的value,將他們以name/value編碼方式作為URL的一部分或者分離的發(fā)送到服務(wù)器上。

2. URL編碼規則。

每對name/value由&分開(kāi),每對來(lái)自表單的name/value用=分開(kāi)。如果用戶(hù)沒(méi)有輸入值的那個(gè)name依舊會(huì )出現不過(guò)就是沒(méi)有值。

URL編碼是在字符ASCII碼的十六進(jìn)制數的前面加上%。例如(她的十六進(jìn)制數表示為5c)的URL編碼就是%5c。

3. 簡(jiǎn)單介紹亂碼和http請求

其實(shí)做web開(kāi)發(fā)亂碼問(wèn)題是經(jīng)常出現的,有了上面編碼的基礎之后下面來(lái)看看亂碼。

1) 亂碼問(wèn)題是web開(kāi)發(fā)過(guò)程中經(jīng)常遇到的問(wèn)題,主要原因就是URL中使用了非ASCII碼造成服務(wù)器后臺程序解析出現亂碼的問(wèn)題。

2) URL中最容易出現中文的地方就是在QueryString的參數值還有Servletpath中。

3) 簡(jiǎn)單用一個(gè)圖來(lái)說(shuō)明一下http請求的流程:

第一步:瀏覽器把URL經(jīng)過(guò)編碼送給服務(wù)器;

第二步:服務(wù)器把這些請求解碼處理完畢之后將顯示的內容進(jìn)行編碼發(fā)送給客戶(hù)端瀏覽器;

第三步:瀏覽器按照指定的編碼顯示網(wǎng)頁(yè)

4) 詳細剖析GET提交如何編碼以及服務(wù)器如何解碼以及亂碼解決方案

對于GET方式,我們知道它的提交是將請求數據附加到URL后面作為參數,這樣依賴(lài)亂碼就會(huì )很容易出現,因為數據name和value很有可能就是傳遞的為非ASCII碼。

當URL拼接后,瀏覽器對其進(jìn)行encode,然后發(fā)送到服務(wù)器。具體規則見(jiàn)URL編碼規則。

這里詳細說(shuō)一下encode的過(guò)程中容易出現的問(wèn)題,在這個(gè)過(guò)程中我們要明白需要URL encode的字符一般都是非ASCII碼字符,所以我們就能知道出現亂碼主要是URL中附加了中文或特殊字符做成的,另一個(gè)要知道URL encode到底是以什么樣的編碼方式對字符進(jìn)行編碼的,其實(shí)這個(gè)編碼方式是由瀏覽器決定的,不同的瀏覽器和同一瀏覽器的不同設置影響了URL的編碼,所以為了避免我們不需要的編碼,我們可以通過(guò)java代碼或javaspcript代碼統一進(jìn)行控制。

完成了URL encode之后URL就成了ASCII范圍內的字符了,然后就以iso-8859-1的編碼方式轉換為二進(jìn)制隨著(zhù)請求頭一起發(fā)送出去。

到了服務(wù)器之后,首先服務(wù)器會(huì )先用iso-8859-1進(jìn)行解碼,服務(wù)器獲取的數據都是ASCII范圍內的請求頭字符,其中請求URL里面帶有參數數據,如果是中衛或特殊字符,那么encode后的%XY(編碼規則中的十六進(jìn)制數)通過(guò)request.setCharacterEncoding()是不管用的。這時(shí)候我們就能發(fā)現出現亂碼的根本原因就是客戶(hù)端一般是通過(guò)用UTF-8或GBK等對數據進(jìn)行encode的,到了服務(wù)器卻用iso-8859-1方式decoder顯然不行。

這里的解決方式有兩種,

一種:是通過(guò)String類(lèi)的getBytes方法進(jìn)行編碼轉換,具體java代碼是:

new String(request.getParameter(“name”).getBytes(“iso-8859-1”),“客戶(hù)端編碼方式”)

第二種:在服務(wù)器xml代碼中改配置信息:

redirectPort="8443"URIEncoding="客戶(hù)端編碼"/>

5) 詳細剖析POST提交如何編碼以及服務(wù)器如何解碼以及亂碼解決方案

對于POST方式,表單中的參數值對是通過(guò)request包發(fā)送給服務(wù)器,此時(shí)瀏覽器會(huì )根據網(wǎng)頁(yè)的ContentType("text/html; charset=GBK")中指定的編碼進(jìn)行對表單中的數據進(jìn)行編碼,然后發(fā)給服務(wù)器。

在服務(wù)器端的程序中我們可以通過(guò)

Request.setCharacterEncoding()設置編碼,然后通過(guò)

request.getParameter獲得正確的數據。

這里出現亂碼可以通過(guò)Request.setCharacterEncoding()直接解決。



分享到:


Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明

男女作爱全部免费观爱| 亚洲一区二区无码偷拍| 小小BBWXXXX| 国产二级一片内射视频播放| 久久99精品国产99久久6男男| 国产免费一区二区三区在线观看|