2016-07-27 19 views
1

我的Tomcat web服務器使用的是Struts框架(v1)。HttpRequest參數在Java中的默認編碼(Tomcat)

在讀取請求參數時,我需要將參數從ISO-8859-1重新編碼爲UTF-8才能獲得正確的值。 例如

String fName = request.getParameter("fName"); 
String displayName = new String(fName.getBytes("ISO-859-1"), "UTF-8"); 
persistName(displayName); 

問題是爲什麼默認編碼是ISO-8859-1? 它在哪裏定義以及如何改變它?

信封細節:

  • Server版本:的Apache Tomcat/7.0.62
  • 操作系統名稱:Linux的
  • JVM版本:1.8.0_92-b14的

回答

2

我想,如果我沒有記錯,可以將連接器上的URIEncoding屬性設置爲默認爲UTF-8。

根據this link,Tomcat 8(嚴格servlet合規性關閉時)下的默認值是UTF-8。在Tomcat 7下,在我的公司,我們明確地設置了這一點。

server.xml中的連接器元件(一個或多個):

<Connector port="80" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="443" URIEncoding="UTF-8"/> 

根據用於Tomcat 7 HTTP connector的配置文檔,這是默認ISO-8859-1。

Tomcat 8 HTTP connector的配置文檔明確規定,如果org.apache.catalina。 STRICT_SERVLET_COMPLIANCE爲false,將使用UTF-8。

我確實有一些想法可以追溯到Servlet 2.4規範,它規定如果沒有指定字符編碼,則使用ISO-8859-1。

0

檢查您的文件的編碼是utf-8,html中的charset元標記也設置爲utf-8。