表單參數變成亂碼
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");