ホームページ >データベース >mysql チュートリアル >MySQL に絵文字を挿入するときに発生する「文字列値が正しくありません」例外を修正する方法

MySQL に絵文字を挿入するときに発生する「文字列値が正しくありません」例外を修正する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 14:36:12933ブラウズ

How to Fix

絵文字挿入時の不正な文字列値例外の解決

JDBC を使用して絵文字を含む文字列を MySQL データベースに挿入しようとすると、次の例外が発生する場合があります。

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...'

このエラーは、MySQL のデフォルトの utf8 文字セットが原因で発生します。基本多言語面内の文字のみをサポートします。この問題を解決するには、絵文字文字が存在する拡張プレーンをカバーするために utf8 を拡張する utf8mb4 文字セットのサポートを有効にする必要があります。

接続の初期化

接続エンコーディングを直ちに utf8mb4 に設定します。接続確立後:

DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password").prepareStatement("SET NAMES 'utf8mb4'");

データベースとテーブル変更

データベースと影響を受けるテーブルの文字セットと照合順序を utf8mb4 に更新します。

ALTER DATABASE `database` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Java コード

Java コードが utf8mb4 文字セットを使用していることを確認します。文字列の文字エンコーディング。たとえば、Connector/J の場合:

DriverManager.getConnection("jdbc:mysql://localhost:3306/database?characterEncoding=utf8mb4", "username", "password");
// ...
preparedStatement.setString(1, "walmart obama ?"); // Emoji characters should be supported now

次の手順に従うことで、utf8mb4 のサポートを有効にし、MySQL データベースに絵文字を挿入する際の不正な文字列値の例外を解決できます。

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

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