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

JSP 編碼全解析:setCharacterEncoding 優先級與 GET/POST 亂碼終極方案

     編輯:Java 綜合教學

三層編碼優先級(響應輸出)

服務器按順序決定響應編碼:

  1. response.setCharacterEncoding()(最高)
  2. response.setContentType("text/html;charset=UTF-8")
  3. pageEncoding="UTF-8"(JSP 頁面指令,最低)

請求參數解碼規則

POST 表單

在接收頁面**讀取參數前**調用:

request.setCharacterEncoding("UTF-8"); // 必須與生成表單頁的 response 編碼一致

原理:Tomcat 默認用 ISO-8859-1 解碼 POST 體,setCharacterEncoding 覆蓋該行為。

GET 請求 / URL 參數

request.setCharacterEncoding() **無效**(Tomcat 5.0+ 默認不使用它解碼 URL)。

兩種解決方案(在 server.xml <Connector> 中配置):

屬性作用建議值
URIEncoding統一指定所有 GET 請求解碼編碼UTF-8
useBodyEncodingForURI啟用後,GET 解碼沿用 request.setCharacterEncoding 值true(Tomcat 4.0 默認 true,5.0+ 默認 false)

區別:URIEncoding 全局統一;useBodyEncodingForURI 允許不同頁面用不同編碼。

最佳實踐總結

  1. 所有 JSP 頁面統一 pageEncoding="UTF-8"、response.setContentType("text/html;charset=UTF-8")。
  2. POST 處理頁面開頭 request.setCharacterEncoding("UTF-8")。
  3. server.xml 設置 URIEncoding="UTF-8" 徹底解決 GET 亂碼。
  4. 資料庫連接 URL 追加 characterEncoding=utf8(MySQL)或 useUnicode=true。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved