ホームページ >データベース >mysql チュートリアル >JDBC を使用して Unicode テキストを MySQL に挿入するときに発生する「文字列値が正しくありません」エラーを修正する方法

JDBC を使用して Unicode テキストを MySQL に挿入するときに発生する「文字列値が正しくありません」エラーを修正する方法

DDD
DDDオリジナル
2024-12-22 08:46:09836ブラウズ

How to Fix

JDBC 経由で MySQL に UTF-8 を挿入すると不正な文字列値エラーが発生する

JDBC を使用して MySQL データベースに Unicode テキストを挿入しようとすると、特にテキストにバイト シーケンス xF0 が含まれている場合、ユーザーは「文字列値が正しくありません」エラーが発生する可能性があります。この問題は多くの場合、大規模なデータセットで発生し、MySQL のデフォルトのエンコード制限に起因する可能性があります。

エラーの原因:

MySQL の utf8 エンコードは、3 つの形式で表現できる Unicode 文字のみをサポートします。バイト。ただし、xF0x90x8Dx83 などの特定の Unicode 文字には、UTF-8 で 4 バイトが必要です。このような文字を utf8 でエンコードされた列に挿入しようとすると、エラーが発生します。

解決策:

この問題を解決するには、次の 2 つのアプローチを取ることができます:

  1. 列を変更エンコーディング:

    列のエンコーディングを utf8mb4 に更新します。utf8mb4 は 4 バイトの Unicode 文字をサポートします。これは、次の SQL ステートメントを使用して実行できます:

    ALTER TABLE <table_name> MODIFY COLUMN <column_name> TEXT COLLATE utf8mb4;
  2. サーバー プロパティの構成:

    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 サイトの他の関連記事を参照してください。

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