ホームページ >データベース >mysql チュートリアル >Java アプリケーションが MySQL データベースと対話するときに歪んだ UTF-8 文字を表示するのはなぜですか?
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 サイトの他の関連記事を参照してください。