前端 encodeURIComponent → 後端 new String(bytes, "UTF-8") 本地正常,部署到伺服器後亂碼。
| 層面 | 本地 | 伺服器 | 檢查指令 |
|---|---|---|---|
| JVM 檔案編碼 | UTF-8 | 可能為 GBK/ISO-8859-1 | java -Dfile.encoding 或啟動腳本 |
| Tomcat URI 編碼 | 預設 ISO-8859-1 | 需在 server.xml 設定 URIEncoding="UTF-8" | Connector 節點 |
| 資料庫連線編碼 | JDBC URL 含 characterEncoding | 同左,但實例參數可能不同 | SHOW VARIABLES LIKE 'character_set%' |
| SVN 檔案編碼 | UTF-8 | 合併時可能轉為 ANSI | file encoding 檢查 .java 檔 |
| 前端頁面編碼 | 同左,但 CDN/Proxy 可能改變 | 瀏覽器 Network 標籤查看 Content-Type |
-Dfile.encoding=UTF-8。server.xml 所有 <Connector> 加 URIEncoding="UTF-8" useBodyEncodingForURI="true"。useUnicode=true&characterEncoding=UTF-8。CHARSET=utf8mb4。svn:mime-type = text/plain; charset=UTF-8。// 在 Servlet 中印出
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("request encoding=" + request.getCharacterEncoding());
全鏈路 UTF-8 一致,亂碼即可徹底消除。