MySql千萬不要用utf 8!!

2021-09-26 07:33:22 字數 466 閱讀 9505

錯誤:「incorrect string value: 『\xf0\x9f\x98\x83 <…』 for column 『******xx』 at row 1」

原因為「utf8」只支援每個字元最多三個位元組,而真正的 utf-8 是每個字元最多四個位元組。

mysql 一直沒有修復這個 bug,他們在 2010 年發布了乙個叫作「utf8mb4」的字符集,繞過了這個問題。

當然,他們並沒有對新的字符集廣而告之(可能是因為這個 bug 讓他們覺得很尷尬),以致於現在網路上仍然在建議開發者使用「utf8」,但這些建議都是錯誤的。

簡單概括如下:

mysql 的「utf8mb4」是真正的「utf-8」。

mysql 的「utf8」是一種「專屬的編碼」,它能夠編碼的 unicode 字元並不多。

所有在使用「utf8」的 mysql 和 mariadb 使用者都應該改用「utf8mb4」,永遠都不要再使用「utf8」。

MySQL 請不要用UTF8了!!!

mysql 的utf8字元編碼 並不是真正的utf8 以前這樣建立資料庫和表 建立資料庫 create database mydatabase default character set utf8 default collate utf8 general ci 建立表 create table if...

不要在MySQL使用UTF 8

最近我遇到了乙個bug,我試著通過rails在以 utf8 編碼的mariadb中儲存乙個utf 8字串,然後出現了乙個離奇的錯誤 incorrect string value xf0 x9f x98 x83 for column summary at row 1 我用的是utf 8編碼的客戶端,伺...

不要在MySQL中使用「UTF 8」

mysql 從 4.1 版本開始支援 utf 8,也就是 2003 年,而今天使用的 utf 8 標準 rfc 3629 是隨後才出現的。舊版的 utf 8 標準 rfc 2279 最多支援每個字元 6 個位元組。2002 年 3 月 28 日,mysql 開發者在第乙個 mysql 4.1 預覽版...