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

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

Mary-Kate Olsen
リリース: 2024-12-07 14:36:12
オリジナル
899 人が閲覧しました

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

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