首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Tomcat GET 亂碼問題:依賴容器預設編碼風險,建議統一過濾器處理

     編輯:程式設計綜合問答

Tomcat 8/9 預設將 GET 參數以 **ISO-8859-1** 解碼,若前端傳 UTF-8 會產生亂碼。雖然可在 server.xml 設定 URIEncoding="UTF-8",但:

  • 部署至其他容器 (Jetty、Undertow、WebLogic) 可能無此設定。
  • 生產環境常由 Nginx 反向代理,編碼行為更難控制。

通用解法:Filter 統一強制 UTF-8

@WebFilter("/*")
public class EncodingFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
            throws IOException, ServletException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        chain.doFilter(req, resp);
    }
}

POST 請求

同樣需在 Filter 或 Controller 入口呼叫 req.setCharacterEncoding("UTF-8") (必須在讀取參數前)。

結論

**不要仰賴 Tomcat 預設行為**,專案啟動即註冊 Encoding Filter,確保全站 GET/POST 皆正確處理 UTF-8,避免遷移容器時出現編碼災難。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved