ホームページ  >  記事  >  データベース  >  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 経由で挿入されたデータがデータベース内で文字化けして表示されるシナリオを検証します。

提供されたコード スニペットは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。