首頁  >  文章  >  資料庫  >  為什麼在 MySQL 中使用 JDBC 時 UTF-8 字串會出現亂碼?

為什麼在 MySQL 中使用 JDBC 時 UTF-8 字串會出現亂碼?

Susan Sarandon
Susan Sarandon原創
2024-11-01 16:24:02352瀏覽

Why are UTF-8 Strings Garbled When Using JDBC with MySQL?

在JDBC 中處理MySQL UTF-8 字串的錯誤

透過JDBC 介面錯誤地處理MySQL 中的UTF-8 字串會導致資料遺失損壞或顯示問題。本文研究了透過 JDBC 插入的資料在資料庫中出現亂碼的場景。

提供的程式碼片段示範了一個 Java 程序,該程序建立與 MySQL 資料庫的連接並將 UTF-8 文字插入表中。然而,在驗證插入的資料時,文字顯示不正確,預期的字元被問號取代。

問題出在MySQL內部的字元編碼設定。預設情況下,MySQL 使用 latin1 字元集和排序規則,與 UTF-8 不相容。要解決此問題,以下步驟至關重要:

1.驗證字元編碼設定

執行下列SQL 指令來查看目前的字元編碼設定:

show variables like 'character%';
show variables like 'collation%';

輸出應表示字元編碼設定為utf8伺服器和資料庫。

2.將MySQL 配置為UTF-8

如果編碼不正確,請透過新增以下行來更新MySQL 設定檔(my.cnf) 進行修改:

[mysqld]
character-set-server = utf8
character-set-filesystem = utf8

或者,您可以使用MySQL Workbench 直覺地修改這些設定。

3.使用正確的URL 參數進行連接

建立Java 連接時,請在JDBC URL 中包含以下參數:

jdbc:mysql://localhost:3306/myDatabase?useUnicode=true&characterEncoding=UTF-8

4.刪除不必要的指令

從程式碼中刪除以下指令:

query = "set character set utf8";
stat.execute(query);

正確設定連線參數時不需要這些指令。

預期結果

應用這些變更並重新啟動 MySQL 後,應使用 JDBC 正確儲存和擷取數據,並以預期的 UTF-8 格式顯示。

以上是為什麼在 MySQL 中使用 JDBC 時 UTF-8 字串會出現亂碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn