Java で MySQL データベースに絵文字を挿入するときに発生する「文字列値が正しくありません」エラーを解決する方法

Patricia Arquette
リリース: 2024-11-23 12:03:11
オリジナル
247 人が閲覧しました

How to Resolve

エンコーディング例外: Java-MySQL の絵文字を含む「不正な文字列値」

MySQL を使用する Java アプリケーションで、例外「java. sql.SQLException: 文字列値が正しくありません:絵文字を含む文字列を挿入すると、「xF0x9Fx91xBDxF0x9F...」が発生する場合があります。このエラーは、文字エンコードの違いが原因で発生します。

問題の文字列値には「walmart obama ??」が含まれていますが、「???」は絵文字を表します。データベースでは、文字列が挿入される変数は varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL として定義されます。ただし、アプリケーションで使用される MySQL バージョンは、UTF-8 エンコーディングの基本的な多言語プレーン (BMP) 文字のみをサポートします。 BMP の範囲外にある絵文字は、このエンコーディングでは適切に表現できません。

この問題を解決するには、補助文字をサポートする UTF-8mb4 エンコーディングに切り替える必要があります。これには、次の調整が含まれます:

  1. MySQL サーバーがバージョン 5.5 以降であることを確認します。
  2. クエリ SET NAMES 'utf8mb4' を使用して、MySQL 接続エンコーディングを "utf8mb4" に設定します。接続を確立します。
  3. 影響を受けるテーブルに UTF-8mb4 エンコードを使用するようにデータベース テーブルを変更します。列、例: var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL.
  4. Java Connector/J を使用して接続を確立し、接続文字列にcharacterEncoding が明示的に設定されていないことを確認してください。サーバーのキャラクターの自動検出set.

これらの変更を行うことで、アプリケーションは UTF-8mb4 エンコーディングを使用して絵文字を適切に処理できるようになり、「文字列値が正しくありません」例外が解決されます。

以上がJava で MySQL データベースに絵文字を挿入するときに発生する「文字列値が正しくありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート