JDBC 経由で MySQL に UTF-8 を挿入すると不正な文字列値エラーが発生する
JDBC を使用して MySQL データベースに Unicode テキストを挿入しようとすると、特にテキストにバイト シーケンス xF0 が含まれている場合、ユーザーは「文字列値が正しくありません」エラーが発生する可能性があります。この問題は多くの場合、大規模なデータセットで発生し、MySQL のデフォルトのエンコード制限に起因する可能性があります。
エラーの原因:
MySQL の utf8 エンコードは、3 つの形式で表現できる Unicode 文字のみをサポートします。バイト。ただし、xF0x90x8Dx83 などの特定の Unicode 文字には、UTF-8 で 4 バイトが必要です。このような文字を utf8 でエンコードされた列に挿入しようとすると、エラーが発生します。
解決策:
この問題を解決するには、次の 2 つのアプローチを取ることができます:
列を変更エンコーディング:
列のエンコーディングを utf8mb4 に更新します。utf8mb4 は 4 バイトの Unicode 文字をサポートします。これは、次の SQL ステートメントを使用して実行できます:
ALTER TABLE <table_name> MODIFY COLUMN <column_name> TEXT COLLATE utf8mb4;
サーバー プロパティの構成:
MySQL バージョン 5.5 以降を使用している場合は、次のように設定します。 MySQL 設定ファイルのcharacter_set_server プロパティを utf8mb4 に変更して、サーバーが 4 バイトの Unicode を処理できるようにします。文字。
character_set_server = utf8mb4
Connector/J 構成:
Connector/J は、characterEncoding パラメーターが省略された場合に UTF-8 設定を自動検出します。接続文字列。したがって、4 バイトの UTF-8 文字セットの場合は、characterEncoding を省略し、上記のようにcharacter_set_server を設定します。
以上がJDBC を使用して Unicode テキストを MySQL に挿入するときに発生する「文字列値が正しくありません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。