關於MySQL實現指定編碼遇到的坑

2022-09-21 09:48:10 字數 488 閱讀 1643

環境:mysql5.7+,mysql資料庫字元編碼實現為utf8,表也為utf8

場景微信授權獲取使用者資訊(包括暱稱)並儲存到資料庫,有的使用者成功了,少數使用者卻失敗了

那麼為什麼會失敗呢?

貼上報錯日誌

incorrect string valkoskqkyvuue: '\xf0\x9f\x98\x98\xf0\x9f...' for column 'nickname' at row 1

是因為程式設計客棧失敗的使用者微信暱稱中帶有emoji符號導致的

剖析:mysql支援多種字元編碼集,如utf-8、gb2312、gbk等

可以通過 show charset 命令檢視。

通常我們會建議使用 utf-8 作為預設的字元編碼方式。

從上圖我們可以看到,mysql資料庫有兩套 utf-8 編碼實現。

查閱資料,官方解釋:

tips:如果有需要儲存emoji符號的字段,記得一定要指定編碼為 utf8mb4 。

mysql指定編碼集

drop table create table varchar 20 not null comment 應用id null comment 應用名稱 source market varchar 50 comment 應用市場 version varchar 10 comment 版本號 update...

mysql 建立庫時指定編碼

建立時指定編碼 create database test default character set utf8 修改資料庫伺服器的預設編碼 在5.1版本時,為了解決中文亂碼問題設定預設字符集為utf8時,在my.ini內的 mysql 和 mysqld 項中都是寫 default character...

指定編碼格式copyc Python 的編碼介紹

python 檔案中如果未指定編碼,在執行過程會出現報錯 usr bin python print 你好 python中預設的編碼格式是 ascii 格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。解決方法為只要在檔案開頭加入 coding utf 8 或者 coding utf ...