1. 程式人生 > >在laravel框架中:Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'

在laravel框架中:Error 1366: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...' for column 'content'

可能的原因:


第一:檢查以下你的編輯器的編碼是否設定為UTF-8;這是最容易忽略的原因之一。


第二:檢查以下你資料庫的varchar/char等相關欄位是否已經設定為utf8

如果用的是navicat,需要檢查兩個地方;

是否都已經設定:


實在不行就將utf8改成utf8mb4

Google說MySQL的utf8不是真正的UTF8,只能包含三個位元組的unicode,4個位元組就會報錯。要解決此總是需要使用utf8mb4 這個編碼。可是我把表和column的CHARSET都改成utf8mb4 後仍無法存入Emoji字元。

原來還要在my.cnf裡修改下mysqld的character-set-server,把它改為utf8mb4

,然後重啟mysqld,就可存入Emoji字元了。

[mysqld]
character-set-server = utf8mb4
  • 1
  • 2

所以,建議大家以後在設計表時 default character set 最好設定為utf8mb4,因為現在Emoji字元已經很流行了,使用者難免會在瀏覽器裡輸入Emoji字元。