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

Java 連接 WampServer MySQL 中文亂碼:JDBC URL 指定 characterEncoding 解決

     編輯:程式設計綜合問答

現象

Java 代碼插入中文 → 數據庫顯示 ?;phpMyAdmin / 客戶端插入正常。

根因

JDBC 驅動默認連接字符集可能為 latin1 或平台默認編碼,導致中文在傳輸層被錯誤編碼寫入。phpMyAdmin 強制使用 UTF-8 連接,故正常。

解決:JDBC URL 顯式指定編碼

String url = "jdbc:mysql://localhost:3306/your_db?characterEncoding=UTF-8&useUnicode=true&serverTimezone=Asia/Shanghai";
Connection conn = DriverManager.getConnection(url, "user", "pass");

關鍵參數說明

參數作用
characterEncoding=UTF-8強制連接層使用 UTF-8 編碼傳輸 SQL 文本與結果集
useUnicode=true啟用 Unicode 支持 (舊版驅動需配合)
serverTimezone=Asia/Shanghai避免時區解析警告/錯誤 (MySQL 5.7+/8.0 必加)
zeroDateTimeBehavior=CONVERT_TO_NULL處理 0000-00-00 日期 (可選)

驗證

  1. 插入中文後,MySQL 客戶端查詢:SELECT HEX(column) FROM table,應看到 E4B8ADE69687 (UTF-8 "中文") 而非 3F (?)。
  2. Java 讀取並打印,控制台輸出正常(確保控制台編碼 UTF-8)。

補充:數據庫/表/列級編碼

CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE t (c VARCHAR(255)) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

utf8mb4 支持完整 Unicode (含 Emoji),utf8 僅支持 BMP (3 字節)。

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