為什麼使用 JDBC 插入 MySQL 時我的 UTF-8 字串顯示為損壞的字元?

Barbara Streisand
發布: 2024-11-01 18:03:02
原創
143 人瀏覽過

Why Are My UTF-8 Strings Displaying As Corrupted Characters When Inserting Into MySQL Using JDBC?

如何通過JDBC 正確地將UTF-8 字符串插入MySQL

問題陳述:

使用JDBC 介面將UTF-8 字串插入MySQL 資料庫時,字元顯示為損壞或不可讀取的符號。

預期字串: Апарати
實際結果: ?????

初始故障排除:

<code class="java">Class.forName("com.mysql.jdbc.Driver").newInstance();
String dbPath = String.format(
    "jdbc:mysql://%s:%d/%s?user=%s&amp;password=%s&amp;characterEncoding=utf-8&amp;&quot; + 
    "&amp;useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password);
conn = java.sql.DriverManager.getConnection(dbPath);</code>
登入後複製

其他故障排除:

另外還採取了這些步驟:

    將Costis Aivalis 建議的行加入/etc/mysql/my.cnf。
  • 從程式碼中刪除了以下行:

    <code class="java">query = "set character set utf8";
    stat.execute(query);</code>
    登入後複製

解:>Java程式碼和MySQL表資料之間的差異是由於字元集不一致造成的。刪除 Java 程式碼中的字元集設定後,該問題已解決。

將Java 程式碼中使用的MySQL 命令與命令提示字元中的類似命令進行比較,發現了細微的差異:

<code class="java">String query = "insert into clt" + " (id, text) values (?, ?)";</code>
登入後複製
在Java 程式碼中,建立表語句中省略了字符集utf8 後綴。 Java 程式碼和直接 MySQL 命令之間的這種差異導致字元集處理不符。
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
登入後複製

結論:

使用 JDBC 介面將 UTF-8 字串插入 MySQL 時,必須確保 Java 程式碼與資料庫設定之間的字元集設定保持一致。這確保了字串被正確處理並儲存在資料庫中。

以上是為什麼使用 JDBC 插入 MySQL 時我的 UTF-8 字串顯示為損壞的字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!