1. 程式人生 > 其它 >Mysql 儲存emoji表情報錯

Mysql 儲存emoji表情報錯

技術標籤:Javajava

一、問題

往mysql存入表情文字emoji,insert後報錯,編碼是utf8,為什麼呢?
mysql資料庫預設不支援表情的儲存

二、解決

  • 日誌報錯
uncategorized SQLException;
SQL state [HY000]; 
error code [1366]; 
Incorrect string value: '\xF0\x9F\x86\x97\xE2\x88...' for column 'body' at row 1; 
nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x86\x97\xE2\x88...' for column 'body' at row 1
  • 原因
在查詢資料中發現,原本utf-8的3位元組是可以覆蓋所有語言的,
但後來emoji符號的出現導致字符集擴充套件了,導致utf-8出現一些4位元組的符號,
mysql的utf-8一個字元佔3個位元組,但emoji表情需要佔4個位元組,因此造成文字無法儲存。
  • 修改資料庫編碼
    在這裡插入圖片描述