昨天上課踏到雷,示範 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 的倒是方便! |