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&password=%s&characterEncoding=utf-8&" + "&useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password); conn = java.sql.DriverManager.getConnection(dbPath);</code>
追加のトラブルシューティング:
これらの手順が追加で実行されました:
コードから次の行を削除しました:
<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>
<code class="bash">mysql> insert into clt (id, text) values (12656697, "Апарати");</code>
Java コードでは、文字セット utf8 サフィックスが create table ステートメントから省略されていました。Java コードと直接 MySQL コマンドの間のこの相違により、文字セットの処理に不一致が生じます。
結論:
JDBC インターフェイスを使用して UTF-8 文字列を MySQL に挿入する場合、Java コードとデータベース構成の間で文字セット設定が一貫していることを確認することが重要です。これにより、文字列が正しく処理され、データベースに保存されることが保証されます。
以上がJDBC を使用して MySQL に挿入すると UTF-8 文字列が破損した文字として表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。