Mysql 儲存emoji表情報錯
阿新 • • 發佈:2020-12-14
一、問題
往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個位元組,因此造成文字無法儲存。
- 修改資料庫編碼