亂碼本質是編碼不一致。解決關鍵在於:瀏覽器 → Web 容器 → Java 代碼 → 資料庫 每一環節皆採用 UTF-8。
response.setContentType("text/html; charset=utf-8");encodeURIComponent() 編碼查詢字串。request.getParameter() 會自動將 + 還原為空格,需注意特殊字符處理。Base64 編碼減少體積,再 encodeURIComponent() 防止 + 被誤解析。URLDecoder.decode(base64Str, "UTF-8") → Base64 解碼。<%@ page pageEncoding="UTF-8"%>、資料庫/表/欄位 CHARSET=utf8mb4。| 現象 | 原因 | 修正 |
|---|---|---|
| 中文變「???」 | 資料庫連線未指定 characterEncoding | JDBC URL 加 ?characterEncoding=utf8 |
| GET 參數亂碼 | Tomcat 8+ 預設 ISO-8859-1 解碼 | server.xml <Connector URIEncoding="UTF-8"/> |
| POST 亂碼 | 未設 request.setCharacterEncoding | Filter 第一行 request.setCharacterEncoding("UTF-8") |
遵循「一處設定、全鏈路統一、前端雙重編碼」原則,JS 與 J2EE 亂碼問題可徹底消除。建議專案啟動即納入編碼規範檢查清單。