原因:瀏覽器解碼編碼與頁面實際編碼不一致。
解決:確保 IDE 以 UTF-8 保存,並在 JSP 頂部添加:
<%@ page pageEncoding="UTF-8" %>
解決:輸出前設置響應編碼:
response.setContentType("text/html;charset=UTF-8");
解決:讀取參數前設置請求編碼:
request.setCharacterEncoding("UTF-8");
最佳實踐:配置全局 CharacterEncodingFilter(Spring 提供),一次配置全局生效。
原因:Tomcat 預設 ISO-8859-1 解碼 URL,request.setCharacterEncoding 無效。
解決:修改 conf/server.xml 中 Connector 節點:
<Connector port="8080" ... URIEncoding="UTF-8" />
原因:Java 編譯器僅支援 Latin-1/Unicode。
解決:使用 JDK native2ascii 工具轉碼:
native2ascii -encoding UTF-8 src.properties target_zh_CN.properties
| 場景 | 核心指令/配置 |
|---|---|
| JSP 顯示 | pageEncoding="UTF-8" |
| Servlet 輸出 | response.setContentType("text/html;charset=UTF-8") |
| POST 參數 | request.setCharacterEncoding("UTF-8") / Filter |
| GET/URL 參數 | server.xml: URIEncoding="UTF-8" |
| Properties 文件 | native2ascii 轉 Unicode |