關於web請求中的編碼解碼問題

2021-07-02 02:57:18 字數 1119 閱讀 5624

以下編譯碼都是針對內容包含中文的情況,否則也不需要編譯碼 :)

1、url編譯碼

url例子:http://localhost:80/contextpath/servletpath/pathinfo?querystring

url中文主要會出現在pathinfo和querystring中,這兩部分的編譯碼是不同的。

a、pathinfo:

編碼--瀏覽器端,預設utf-8,ie在選項--高階--國際中可取消傳送utf-8,其他瀏覽器不清楚是否可以修改

解碼--web伺服器,tomcat中在設定utf-8格式

b、querystring:

編碼--瀏覽器端,預設gbk

解碼--web伺服器,在request.getparameter方法第一次被呼叫時解碼,解碼字符集為:1、如果伺服器中中usebodyencodingforuri設定為true,使用請求頭contenttype中定義的charset的字符集進行解碼 2、使用預設iso-8859-1

2、http header編譯碼

編碼--客戶端設定或者瀏覽器。由於無法設定解碼格式,所以最好不要在header中傳遞非ascii字元

解碼--在呼叫request.getheader時進行,預設iso-8859-1,不可以修改

3、post表單編譯碼

編碼--瀏覽器,根據contenttype中的charset格式進行編碼,但是預設瀏覽器提交表單時其content-type中是不含charset資訊的。

解碼--服務端,在呼叫用request.getparameter之前進行解碼,也是根據contenttype中的charset進行解碼,另外可以通過request.setcharacterencoding(charset)進行設定。

4、http body編譯碼

一般指的是response中的html內容。

編碼--伺服器,通過response.setcharacterencoding來設定,會覆蓋掉request.getcharacterencoding的值,然後通過header中的content-type返回給客戶端

解碼--瀏覽器,通過響應頭中的content-type中的charset進行解碼,若沒有charset,根據html中的來解碼,若仍然沒有,則使用預設編碼進行解碼

web請求編碼與解碼

編碼字符集 瀏覽器編碼 瀏覽器傳送請求時對uri和querystring的編碼是不一樣的 各瀏覽器採用的編碼方式也不一 encodeuricomponent 比encodeuri 編碼的字元更多,通常用於將乙個url當作引數放在另乙個url中時進行編碼 瀏覽器會根據contenttype的編碼方式對...

Servlet中web請求的編碼

post的編碼則是由請求裡的setcharacterencoding來設定。如果你使用getparameter來讀取引數值,必須確保在沒有任何getparameter呼叫之前就設定好編碼了。乙個方便的地方是servlet 2.3的filter。下面 用了spring提供的characterencod...

C 關於編碼 解碼相關問題

編碼 解碼技術是我們在程式中開發中經常使用到的,對一些敏感資訊的儲存,比如密碼之類的,我們一般是不會直接以明文直接儲存到資料庫的,而是會通過各種演算法,可以是現成的md5 一種雜湊演算法 或者是hash演算法 salt 混淆因子 甚至是自己定義的一套演算法進行加解密。這裡不想闡述加解密技術,在之前的...