データベース格納emojiエラー:Incorrect string value:´xF 0x 9 Fx A 4x A 3xE 3x 80...´ for column xxx
3381 ワード
問題の説明
データベースにemojiの表情を格納するときにエラーが表示されました:
Incorrect string value: '\xF0\x9F\xA4\xA3\xE3\x80...' for column 'content' at row 1
の原因となる
データベースがutf-8符号化フォーマットを使用している場合、デフォルトでは3バイトが1単位で符号化され、emoji表情は4バイト1単位で符号化されるため、この4バイトで表すemoji表情(正確にはUnicode文字)が遮断され、格納されないエラーが発生する
解決策
解決方法1
①、データベースのデフォルト文字セットをutf 8 mb 4に設定する
ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
②、データテーブルの文字セットをutf 8 mb 4に設定
ALTER TABLE CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
③、データベース接続先の変更
アドレスを削除した
useUnicode=true&characterEncoding=utf-8
例えば私の住所はjdbcです.mysql://000.000.000.000:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTCでjdbcに変更します.mysql://000.000.000.000:3306/demo?useSSL=true&serverTimezone=UTCすぐ解決方法2
サードパーティjarパッケージによる変換
インポート:
<dependency>
<groupId>com.github.binarywanggroupId>
<artifactId>java-emoji-converterartifactId>
<version>0.1.1version>
dependency>
コードの変換:
private EmojiConverter emojiConverter = EmojiConverter.getInstance();
emojiConverter.toAlias( );