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

JSP + MySQL 中文亂碼終極解決:request.setCharacterEncoding 關鍵一步

     編輯:程式設計綜合問答

現象

JSP 頁面編碼、MySQL 表字符集均設為 UTF-8,但請求參數中文存入數據庫變亂碼,而代碼中寫死的字符串正常。

根本原因

Tomcat 默認使用 ISO-8859-1 解碼請求參數。雖然頁面與數據庫一致,但 request.getParameter() 讀取時已按錯誤編碼解碼,導致字節序列損壞,後續轉碼無法恢復。

修復代碼

<%
    // 必須在任何 getParameter() 之前調用
    request.setCharacterEncoding("UTF-8");
    String equipment = request.getParameter("chance_equipment");
    String state = "未指派"; // 此處正常因為源文件已保存為 UTF-8
    // ... 入庫邏輯
%>

全鏈路檢查清單

  1. JSP 頁面頭部:<%@ page contentType="text/html;charset=UTF-8" %>
  2. HTML meta:<meta charset="UTF-8">
  3. web.xml 過濾器(推薦):配置 CharacterEncodingFilter 全局攔截,免去每個 JSP 重複設置。
  4. MySQL 連接串:useUnicode=true&characterEncoding=utf8(MySQL 8.0+ 可省略)。
  5. 數據庫/表/列字符集:CHARSET=utf8mb4(支持 Emoji)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved