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