JSP 頁面傳遞中文參數(如 human=${logUser.name})到後台時出現亂碼(Firebug 顯示 %E8%94%BA%E6%BA%90 為 URL 編碼後的 UTF-8 位元組),但後台未正確解碼。根本原因多為 **Tomcat 連接器未指定 URI 編碼**,導致預設用 ISO-8859-1 解碼 URL 參數。
找到 Tomcat 安裝目錄下 conf/server.xml,在 <Connector> 元素加入 URIEncoding="UTF-8":
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
重啟 Tomcat 即可。此設定讓 Tomcat 以 UTF-8 解碼 URL 路徑與查詢字串參數,配合 JSP 頁面 pageEncoding="UTF-8"、資料庫連線 characterEncoding=utf8,即可全鏈路解決中文亂碼。
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><meta charset="UTF-8">?useUnicode=true&characterEncoding=utf8CharacterEncodingFilter)設定 forceEncoding=true統一全鏈路 UTF-8,是徹底根治 Java Web 中文亂碼的唯一正解。