程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-tomcat怎麼處理中文請求參數的

java-tomcat怎麼處理中文請求參數的

編輯:編程綜合問答
tomcat怎麼處理中文請求參數的

我們請求的中文參數會被URL轉碼為有%xy類型,服務器接收到這些字節數組時,遍歷數組,找到name和value的字節段,解碼 name和value的值並添加到map集合中,其實這就是request.getparameter的實現原理。。。不清楚的地方,在解碼過程中,服務器得到的 字節數組中 帶有%的字節,是怎麼處理的。源碼中,通過urldecode解碼的這些字節,但是這個是是它自定義的,並不是URLDecode.decode
就是這裡不清楚,什麼時候去掉的%的字節的。

最佳回答:


request這裡其實在取之前,程序內l默認會自動按iso-885以9-1來解碼,由於它是單字節編碼,而漢字是雙字節,所以會出現亂碼。所以這時有request取得
參數之前,先設置解碼的格式。才不會亂碼。等你取得時候才會解碼的。才去掉%
解析請求的URL是在org.apache.coyote.HTTP11.InternalInputBuffer的pareRequestLine方法中進行的,這個方法把傳過來的byte[]設置到org.apache.coyote.Request
的相應屬性。注意,這裡存儲的URL依然是byte格式(也就是加%),真正轉換成char是發生在org.apache.catalina.connector.CoyoteAdapter的convertURI
方法中完成的。所以,有中文編碼時,最好將URIEncoding設置成UTF-8編碼。解碼是getparameter被第一次調用時發生的。它會調用
org.apache.catalina.connector.Request中的paseParameters方法,這個方法將會對GET或POST的數據進行解碼。(純手打,累死了。。。。。)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved