ホームページ  >  記事  >  データベース  >  Java アプリケーションが MySQL データベースと対話するときに歪んだ UTF-8 文字を表示するのはなぜですか?

Java アプリケーションが MySQL データベースと対話するときに歪んだ UTF-8 文字を表示するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 10:47:02510ブラウズ

Why is my Java application displaying distorted UTF-8 characters when interacting with a MySQL database?

JDBC MySQL 相互作用における UTF-8 エンコーディングの問題のトラブルシューティング

JDBC コネクタ 5.1 を使用した Java-MySQL 統合シナリオでは、特有のエンコーディングの問題が発生しますUTF-8 データの読み取りおよび書き込み時。文字が歪んだり文字化けして表示され、データベース操作と Web アプリケーションの両方で予期しない視覚化が発生します。

この謎を解決するには、データベース設定を調べてください:

character_set_client-->utf8
character_set_connection-->utf8
character_set_database-->utf8
...
character_set_server-->latin1
...

この問題は、文字セットの不一致に起因します。データベース サーバーは、UTF-8 をネイティブにサポートしない「latin1」を使用します。これを修正するには、JDBC 接続文字列で「useUnicode」パラメータと「characterEncoding」パラメータを明示的に設定します。

DriverManager.getConnection(
           "jdbc:mysql://" + host + "/" + dbName 
           + "?useUnicode=true&characterEncoding=UTF-8", user, pass);

これにより、読み取り操作と書き込み操作の両方で一貫して UTF-8 が使用されるようになります。

この問題はデータベース構成だけに関係しているわけではありません。 Java アプリケーションが UTF-8 を正しく処理しない場合もあります。データベース設定を調整した後もエンコードの問題が解決しない場合は、以下を使用してデータベースからデータをデコードすることを検討してください。

new String(data.getBytes("UTF-8"));

これにより、データが UTF-8 文字列に変換され、Java アプリケーションで適切に視覚化できるようになります。ただし、データベースへの書き込みが妨げられる可能性があるため、これは一般的な解決策としては避けてください。

以上がJava アプリケーションが MySQL データベースと対話するときに歪んだ UTF-8 文字を表示するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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