表單參數變成亂碼

Posted by Bruce Tsai

Tomcat 的參數亂碼問題由來已久,發生原因為 Tomcat 容器本身預設的解析編碼為 ISO-8859-1,在 GET 請求的 header 中若未指定處理的編碼時,容器就會以預設的編碼來解析。而往往在開發時所使用的編碼為 UTF-8,因為就會造成亂碼問題。相關的內容可參考Servlet 中文處理(Tomcat)。主要有兩個解決方案:

變更伺服器設定

修改 {tomcat_server_path}/conf/server.xml,找到 Connector 的標籤,並加入 URIEncoding 的設定。

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

由程式方面處理

若由於某些因素無法修改伺服器設定,就得由程式各別修改,將輸入參數由 ISO-885901 轉回 UTF-8

text = new String(name.getBytes("ISO-8859-1"), "UTF-8");

results matching ""

    No results matching ""