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

JSP + MySQL 中文亂碼解決:UTF-8/GB2312 編碼鏈完整配置(頁面、連線、資料庫三層)

     編輯:MySQL 綜合教學

亂碼根因:編碼鏈任一環節不一致

JSP 頁面編碼 → Java 內部 Unicode → JDBC 連線字元集 → MySQL 資料表/欄位編碼

若任何一環不符,中文即顯示亂碼或存入錯誤位元組。

三層級統一配置方案(以 UTF-8 為例)

1. JSP 頁面宣告編碼(最前端)

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
  • contentType:回應 HTTP Header Content-Type: text/html; charset=UTF-8。
  • pageEncoding:JSP 檔案本身儲存編碼(IDE 需同步設為 UTF-8)。

2. JDBC 連線指定字元集(關鍵中介)

// MySQL 5.1+ Connector/J
String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";
// 或 8.0+ (characterEncoding 預設 UTF-8,可省略)
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Taipei";
  • useUnicode=true:啟用 Unicode 支援。
  • characterEncoding=UTF-8:傳輸編碼設為 UTF-8。
  • 舊版驅動可能需 &useOldUTF8Behavior=true。

3. MySQL 資料庫/資料表/欄位編碼(存儲端)

-- 建庫指定
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 建表指定
CREATE TABLE t (c VARCHAR(100)) DEFAULT CHARSET=utf8mb4;

-- 修改既有表/欄位
ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
強烈建議用 utf8mb4(支援完整 Unicode 含 Emoji),而非舊版 utf8(僅 BMP 平面,3 bytes/字)。

舊專案 GB2312/Big5 環境配置

  • 頁面:contentType="text/html;charset=GB2312" / pageEncoding="GB2312"
  • JDBC:characterEncoding=GBK(GB2312 超集,相容性更好)
  • 資料庫:DEFAULT CHARSET=gbk
  • Java 內部字串轉碼(若需手動):
    String gbk = new String(utf8.getBytes("ISO-8859-1"), "GBK");(經典錯誤修正範式)

常見誤區

  • 以為 MySQL 不支援 UTF-8 → 錯,MySQL 4.1+ 完整支援,8.0 預設 utf8mb4。
  • 只改頁面編碼不改 JDBC URL → 瀏覽器顯示正常但資料庫存入錯誤編碼。
  • 用 utf8 而非 utf8mb4 → 存 Emoji/生僻字報錯 Incorrect string value。
原文標題:jsp MySQL 的中文問題
連結:https://www.cnblogs.com/bobomail/archive/2005/03/18/121068.html
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved