JDBC での MySQL UTF-8 文字列の処理の間違い
JDBC インターフェイスを介して MySQL で UTF-8 文字列を誤って処理すると、データが発生する可能性があります破損または表示の問題。この記事では、JDBC 経由で挿入されたデータがデータベース内で文字化けして表示されるシナリオを検証します。
提供されたコード スニペットは、MySQL データベースへの接続を確立し、UTF-8 テキストをテーブルに挿入する Java プログラムを示しています。ただし、挿入されたデータを確認すると、テキストが正しく表示されず、予期された文字が疑問符に置き換えられます。
問題は、MySQL 内の文字エンコーディング設定にあります。デフォルトでは、MySQL は UTF-8 と互換性のない latin1 文字セットおよび照合順序を使用します。これを解決するには、次の手順が重要です。
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 中国語 Web サイトの他の関連記事を参照してください。