以下編譯碼都是針對內容包含中文的情況,否則也不需要編譯碼 :)
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 混淆因子 甚至是自己定義的一套演算法進行加解密。這裡不想闡述加解密技術,在之前的...