web請求編碼與解碼

2021-06-27 00:57:33 字數 1129 閱讀 9411

編碼字符集

瀏覽器編碼

瀏覽器傳送請求時對uri和querystring的編碼是不一樣的

各瀏覽器採用的編碼方式也不一

encodeuricomponent()比encodeuri()編碼的字元更多,通常用於將乙個url當作引數放在另乙個url中時進行編碼

瀏覽器會根據contenttype的編碼方式對post表單的中文進行編碼,tomcat預設用contenttype字符集解碼,所以一般不會出現亂碼

tomcat 伺服器解碼

req.setcharacterencoding("*")對querystring解碼起效
在第一次呼叫getparameter()前,如果設定了req.setcharacterencoding("*");則使用該編碼,否則嘗試使用contenttype中的編碼,如果沒有contenttype則按照iso-8859-1編碼。

經驗

不要在url中直接使用中文,如果需要有中文,需要對url的中文依照某種字符集編碼,否則瀏覽器會幫你編碼,而不同瀏覽器編碼時使用的字符集不同,會導致伺服器解碼後亂碼

如果設定了request.setcharacterencoding("*");應該一併設定response.setcharacterencoding("*");

終極解決方案:

設定<connector usebodyencodingforuri=true>

在第一次呼叫getparameter()前,設定request.setcharacterencoding("utf-8");-可使用springorg.springframework.web.filter.characterencodingfilter

url中如果出現中文,需要先使用encodeuri()編碼,保證編碼字符集為utf-8

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

以下編譯碼都是針對內容包含中文的情況,否則也不需要編譯碼 1 url編譯碼 url例子 http localhost 80 contextpath servletpath pathinfo?querystring url中文主要會出現在pathinfo和querystring中,這兩部分的編譯碼是不...

is 編碼與解碼

is 和 主要是數字和字串的比較 1 區別 比較的是兩邊的值 is比較的是兩邊值的id id獲取的方法 id 2 小資料池 5 256 3 字串中特殊字元有id不同 4 字串中單個字元 20以內,記憶體位址是一樣的 21以上記憶體位址不一致 編碼與解碼 1 encode a 把明文編譯成a格式 de...

Huffman編碼與解碼

近期學習資料結構碰到huffman編碼與解碼問題,自己動手寫了一些,注釋比較全,ok,下面直接貼 include include define telemtype char define wtype int define leafnumber 5 預設權重集合大小 define totalnumbe...