2012-12-27 33 views
0

當我在http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.0/org/apache/catalina/connector/Request.java#Request.parseParameters%28%29 查看tomcat源代碼時,我找不到在哪裏設置來自get方法的queryString的編碼,以及server.xml中的配置URIEncoding="UTF-8"如何在此方法中工作。URIEncoding ='UTF-8'如何工作?

+1

Web服務器不應該是utf-8意識到的。你的應用程序應該知道它。 –

+4

@ shiplu.mokadd.im:'URIEncoding'參數配置servlet容器,而不是web服務器本身。由於servlet容器負責解碼查詢字符串並將其拆分爲單獨的參數,因此需要對其進行正確配置。 – Codo

回答

3

URIEncoding參數就是你要找的。它設置URI解碼查詢字符串時要使用的字符編碼。

您在server.xml中使用它作爲Connector實體的屬性。

如果在過去成功使用它。

+0

你的意思是URI包含查詢字符串? – melo

+0

在GET請求中,查詢字符串位於URI中。在POST請求中,查詢字符串位於請求正文中(但是是URL編碼的)。 – Codo

+0

哦!但是如何證明它,我的意思是說有任何文檔在寫它? – melo

1

首先,讓我們使用更新版本的Tomcat。 7.0.0已過年:Request.java from Tomcat 7.0.34

其次,parseParameters方法不設置編碼:它取得由其他組件設置的編碼。其中內容編碼可能已設置的一些地方:

  1. 連接器的的URIEncoding(默認爲ISO-8859-1按照HTTP RFC)
  2. 請求體的編碼(從HTTP請求的Content-Type頭)
  3. 另一個組成部分 - 也許是在尋找一個參數的值

嗅探編碼如果你只是想設置的URI編碼設置爲UTF-8無條件整個網站,然後只用URIEncoding屬性,您的<Connector>

直接回答你的問題是server.xml的URIEncoding屬性在這個方法中不起作用:它在其他地方工作。