JavaバックグラウンドMySQLデータベースはemoji表情をサポート

1546 ワード

最近は投稿の投稿や返信をしてiOS側やAndroid側に表情を添えるとエラーになります
Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'comment' at row 1

表情に問題があることを提示して、急いで資料を調べます.
まずデータベースはUTF-8に符号化され、フィールドcontentはtext(CHARSET=utf 8 COLLATE=utf 8_unicode_ci)に設定され、投稿内容情報を格納するために使用され、現在、emoji表情を格納する新機能が導入され、emoji表情を挿入すると上記のエラーが報告され、UTF-8符号化は2、3、4バイトである可能性がある.Emojiの表情は4バイトで、Mysqlのutf 8は最大3バイトまで符号化されているので、データは挿入できません.utf 8 mb 4はutf 8と互換性があり、utf 8よりも多くの文字を表すことができるので、データベースの符号化をutf 8 mb 4に設定します.
データベース符号化utf 8からutf 8 mb 4に設定
1修正my.cnfファイル
[client]
default-character-set=utf8mb4
  
[mysql]
default-character-set=utf8mb4
  
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = false

2データベース関連テーブルの文字セット変更
 utf8mb4
ALTER DATABASE post CHARACTER SET utf8mb4  COLLATE utf8mb4_unicode_ci;

ALTER TABLE `post_article` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE `post_article` MODIFY COLUMN `content`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


3データベースの再起動
sudo /etc/init.d/mysql restart

4データベースの文字セットがutf 8 mb 4であるかどうかを確認します.
SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';

5 java Javaのデータベース接続を設定し、characterEncodingを削除し、mysql connectorバージョンが5.1.13より高いことを保証すればOKです.
本リンク