JavaバックグラウンドMySQLデータベースはemoji表情をサポート
1546 ワード
最近は投稿の投稿や返信をしてiOS側やAndroid側に表情を添えるとエラーになります
表情に問題があることを提示して、急いで資料を調べます.
まずデータベースは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ファイル
2データベース関連テーブルの文字セット変更
3データベースの再起動
4データベースの文字セットがutf 8 mb 4であるかどうかを確認します.
5 java Javaのデータベース接続を設定し、characterEncodingを削除し、mysql connectorバージョンが5.1.13より高いことを保証すればOKです.
本リンク
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です.
本リンク