在Mysql中真正的“UTF-8”编码叫“utf8mb4”!!!

Owen Jia 2019年10月24日 975次浏览

Mysql的utf8编码并不是标准的UTF-8编码,编码集少于国际标准。他们比较懒,在5.5.3+版本后推出了utf8mb4,用来替代原来的utf8,但是他们不怎么推广...

请选择标准UTF-8,即Mysql编码utf8mb4。

测试用例

mysql> SET NAMES utf8; # just to emphasize that the connection charset is set to `utf8`
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE database_name.table_name SET column_name = 'foo𝌆bar' WHERE id = 9001;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> SELECT column_name FROM database_name.table_name WHERE id = 9001;
+-------------+
| column_name |
+-------------+
| foo         |
+-------------+
1 row in set (0.00 sec)

聪明的你会发现:字符被截断了

推荐一篇非常好的文章,详细描述了utf8和uft8mb4区别,关键还给出了如何切换的方案,作者名叫:Mathias,Google工程师。

链接:https://mathiasbynens.be