java存儲表情符號 Incorrect string value: '\xF0\x9F\x91\xBD' for column

最近碰到一個存儲表情失敗,需要做到三件事,

1.表和該項都需要支持

這時候,只是數據庫表支持存儲,但是存儲轉換的時候,還是會有問題,以下兩種方式可以處理:

2.代碼進行轉義處理  (推薦: 代碼處理對於程序員來說最快,因爲修改數據庫編碼,有時建表,會修改編碼格式)

   把需要存儲的表情,在保存的時候,通過Base64封裝一層,而獲取的時候,不用轉換。

public static void main(String args[]){
        String str = "👽夏天";
        try {
            String s = new String(Base64.getEncoder().encode(str.getBytes()), "UTF-8");
            System.out.println(s);
            String ss = new String(Base64.getDecoder().decode(s));
            System.out.println(ss);
        }catch (UnsupportedEncodingException e){
 
            System.out.println(e.getCause());
        }
 
    }

3.修改數據庫的默認編碼

    a.查看數據庫的編碼格式

1

2

3

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

SHOW VARIABLES Like '%char%'

修改配置文件my.cnf   增加 character-set-server=utf8mb4

如果不知道配置文件在哪裏的話可以根據一下命令查找

1

2

3

mysqld --verbose --help|grep -A 1 'Default options'

或者是執行:

mysql --verbose --help|grep -A 1 'Default options'

通常服務器首先會讀取/etc/my.cnf文件,如果發現該文件不存在,再依次嘗試從後面的幾個路徑進行讀取。

修改配置文件後保存,並重啓mysql服務

1

2

3

service mysqld restart

service mysql restart

如果數據庫、表已經創建可以直接修改數據庫或表的編碼格式

查看數據表的編碼格式

1

show create table <表名>;

修改數據庫的編碼格式

1

mysql>alter database <數據庫名> character set utf8mb4;

修改數據表格編碼格式

1

alter table <表名> character set utf8mb4;

修改字段編碼格式

1

alter table <表名> change <字段名> <字段名> <類型> character set utf8mb4;

飲水思源: https://www.cnblogs.com/rainerl/p/10950472.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章