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工程师。