top

Tomcat 7 中文處理

昨天上課踏到雷,示範 GET 時處理中文亂碼問題,new String(param.getBytes("ISO-8859-1"), "your encoding") 一直還是…亂碼…

原來是 Tomcat 7 不知道哪個版本開始,server.xml 中設定 <Connector URIEncoding="utf-8"...>…

以前版本的設定是  <Connector URIEncoding="iso-8859-1"...>,因此過去處理 GET 的中文亂碼時,可以 new String(param.getBytes("ISO-8859-1"), "your encoding") 來解決,不過如果 server.xml 中設定 <Connector URIEncoding="utf-8"...> 就不適用了,例如你是 Big5 的 URI 編碼過來的話,用 utf-8 來解釋,可能會沒有對應編碼,也就是顯示時會是「?」,這樣通常就沒救了 …

如果你以前就是用 new String(param.getBytes("ISO-8859-1"), "your encoding") 來處理 GET 時的亂碼,那就將 <Connector URIEncoding="utf-8"...>… 改回 <Connector URIEncoding="iso-8859-1"...> 就可以了…


<Connector URIEncoding="utf-8"...> 的設定,對於系統是 UTF-8 的倒是方便!

回復 2# fb1000037856335

這麼說來,因為我是用 NetBeans 安裝時內建的 Tomcat 7,而 UTF-8 是 NetBeans 預設編碼,所以它也把附的 Tomcat 設為 UTF-8,那就是 NetBeans 不知道哪個版本開始,將 Tomcat 的 URI Encoding 設定為 UTF-8 了。

直接下載了官網上來看,確實是沒有設定 URIEncoding,也就是仍採用預設的 ISO-8859-1。

TOP