首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

解決 Tomcat URL 中文參數亂碼:URIEncoding 強制指定 GBK/UTF-8

     編輯:Java 相關知識

現象:`GET /search?q=中文` 後端 `request.getParameter("q")` 取得亂碼。原因:Tomcat 8+ 預設 **URL 解碼用 UTF-8**,若前端頁面/表單為 GBK 編碼提交,解碼錯誤導致亂碼。

修正:修改 $TOMCAT/conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="GBK" />  <!-- 或 UTF-8,與前端編碼一致 -->
  • 找到 `` 節點。
  • 新增/修改 `URIEncoding="GBK"` (或 `UTF-8`)。
  • **重啟 Tomcat** 生效。

完整編碼鏈路一致性檢查表

環節配置點建議值
前端頁面`` / `<%@ page pageEncoding="..." %>`UTF-8 (推薦) / GBK
表單提交`
`
與頁面一致
Tomcat Connector`URIEncoding`與前端一致
Servlet 讀取`request.setCharacterEncoding("...")` (POST 必須)與前端一致
資料庫連線`characterEncoding=...` (JDBC URL)與資料表字符集一致
資料表/欄位`CHARSET=...`UTF-8 (utf8mb4) 推薦

POST 請求額外注意

`URIEncoding` **僅影響 GET 參數解碼**。POST 請求體解碼需在讀取參數**前**調用:

request.setCharacterEncoding("UTF-8"); // 或 GBK
String param = request.getParameter("q");

建議在 `Filter` (如 `CharacterEncodingFilter`) 統一設定,覆蓋全站。

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