国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

1.  什么是URL編碼。

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


2.  URL編碼規(guī)則。

每對name/value由&分開,每對來自表單的name/value用=分開。如果用戶沒有輸入值的那個(gè)name依舊會出現(xiàn)不過就是沒有值。

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


3.  簡單介紹亂碼和http請求

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

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

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

3)  簡單用一個(gè)圖來說明一下http請求的流程:



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

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

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


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

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

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

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

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

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

這里的解決方式有兩種,

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

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


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

<Connector port="8080"protocol="HTTP/1.1"  maxThreads="150" connectionTimeout="20000"

redirectPort="8443"URIEncoding="客戶端編碼"/>

 

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

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

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

Request.setCharacterEncoding()設(shè)置編碼,然后通過

request.getParameter獲得正確的數(shù)據(jù)。

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


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
GET POST 區(qū)別詳解
中文化和國際化問題權(quán)威解析之五:URL編碼/Misc
JSP中文亂碼解決方案-Tomcat5.0版
java中文亂碼解決之道(六)-----javaWeb中的編碼解碼
js-url編碼解碼
JAVA中文字符編碼問題詳解 控制臺輸出,字符編碼格式轉(zhuǎn)換
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服