在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中文網其他相關文章!