專案全鏈路設定 UTF-8 (DB、頁面、Struts、Filter) 仍出現兩種詭異亂碼情況,記錄於此為鑑。
現象:POST 表單正常,GET 請求 (超連結、AJAX GET) 中文參數變亂碼。
原因:Tomcat 預設 URL 解碼使用 ISO-8859-1,非 UTF-8。
解決:修改 $CATALINA_HOME/conf/server.xml 中 `URIEncoding="UTF-8":
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
重啟 Tomcat 即生效。注意:此設定影響所有 WebApp 的 GET 參數解碼。
<s:property> 輸出 HTML 標籤未解析現象:頁面顯示正常,但「檢視原始碼」發現後台資料被 HTML Entity 編碼(如 `` 變 `<b>`),導致富文本內容直接顯示標籤而非渲染。
原因:Struts 2 `
解決:在需要輸出 HTML 內容的標籤上明確關閉轉義:
<s:property value="content" escape="false" />
同時檢視原始碼確認標籤已正常輸出。安全提醒:僅對可信內容(如後台編輯器產出)關閉 escape,用戶輸入內容務必保持 escape=true 防 XSS。
亂碼問題本質是編碼/解碼鏈路任一環節不一致。全鏈路 UTF-8 + 針對性關閉轉義,可徹底根治。