General error: 1366 Incorrect string value: '\xF0\x9F\x98\x8A' for column
一、總結
一句話總結:
出錯原因是因為mysql中的utf8是3個字符,一些特殊的字符四個字符,需要用utf8mb4類型
解決方法就是將mysql的編碼改成utf8mb4
1、出錯原因?
a、我們可以看到錯誤提示中的字符\xF0\x9F\x98\x8A ,這對應UTF-8編碼格式中的4字節編碼(UTF-8編碼規范)。
b、正常的漢字一般不會超過3個字節,為什么為出現4個字節呢?實際上是它對應的是智能手機輸入法中的表情。
c、那為什么會報錯呢?因為mysql中的utf-8並不是真正意義上的utf-8,它只能存儲1~3個字節長度的utf-8編碼,如果想存儲4個字節的必須用utf8mb4類型。
d、不而要使用utf8mb4類型,首先要保證Mysql版本要不低於 MySQL 5.5.3。
2、解決方法?
1、首先改變數據庫的字符的編碼格式為utf8mb4;
2、再一個修改數據庫連接的配置,本人用的是php,所以修改數據庫連接編碼格式為utf8mb4
二、General error: 1366 Incorrect string value: '\xF0\x9F\x98\x8A' for column
博客對應課程的視頻位置:
MYSQL錯誤:
今天向數據庫插入一條數據時,有條數據的某個字段包含\xF0\x9F\x98\x8A字符,導致MYSQL數據庫出現以下錯誤:
General error: 1366 Incorrect string value: '\xF0\x9F\x98\x8A' for column ...
錯誤原因:
我們可以看到錯誤提示中的字符\xF0\x9F\x98\x8A ,這對應UTF-8編碼格式中的4字節編碼(UTF-8編碼規范)。正常的漢字一般不會超過3個字節,為什么為出現4個字節呢?實際上是它對應的是智能手機輸入法中的表情。那為什么會報錯呢?因為mysql中的utf-8並不是真正意義上的utf-8,它只能存儲1~3個字節長度的utf-8編碼,如果想存儲4個字節的必須用utf8mb4類型。不而要使用utf8mb4類型,首先要保證Mysql版本要不低於 MySQL 5.5.3。
解決:
1. 首先改變數據庫的字符的編碼格式為utf8mb4;
2. 再一個修改數據庫連接的配置,本人用的是php,所以修改數據庫連接編碼格式為utf8mb4