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

Web 開發中文亂碼終極排查清單:從瀏覽器到數據庫的完整鏈路

     編輯:程式設計綜合問答

亂碼產生的三大核心環節

環節關鍵設置驗證方法
前端頁面<meta charset="UTF-8">、表單 accept-charset="UTF-8"DevTools Network → Headers → Content-Type
Web 容器Tomcat server.xml URIEncoding="UTF-8"、web.xml CharacterEncodingFilter請求參數在 Filter 中打印
後端代碼Java request.setCharacterEncoding("UTF-8")、JSP pageEncoding="UTF-8"Controller 入口打印參數
數據庫連接JDBC URL ?characterEncoding=utf8&useSSL=false、表/庫字符集 utf8mb4插入後 SELECT HEX(col) 檢查字節

標準化配置清單



<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>



    EncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
        encoding
        UTF-8
    
    
        forceEncoding
        true
    


    EncodingFilter
    /*






server:
  servlet:
    encoding:
      charset: UTF-8
      force: true
      enabled: true


jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai

調試黃金法則:二分法定位

  1. 瀏覽器 Network 面板查看 Request Payload / Form Data 是否已經亂碼 → 是 → 前端/容器問題
  2. Controller 入口打印參數 → 亂碼 → 容器/Filter 問題
  3. Service 層打印 → 亂碼 → Java 代碼處理問題
  4. 數據庫查看 HEX 值 → 正確 → 讀取/顯示層問題;錯誤 → 寫入/連接層問題

常見誤區

  • ❌ 以為設置了 meta charset 就萬事大吉(GET 請求 URL 編碼由瀏覽器決定,Tomcat 需 URIEncoding)
  • ❌ 使用 new String(bytes, "ISO-8859-1") 強制轉碼(掩蓋症狀,不可維護)
  • ❌ 數據庫字符集用 utf8 而非 utf8mb4(無法存 Emoji、生僻字)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved