为什么 UTF-8 编码的 MySQL 数据库碰到一些罕见字还是会报错: Incorrect string value

2015-03-05 08:01:48 +08:00
 laoyuan
CREATE TABLE IF NOT EXISTS `testx` ( `author` varchar(10) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `testx` (author) VALUES ('顾铮𠀡');

Incorrect string value: '\xF0\xA0\x80\xA1' for column 'author' at row 1

𠀡这个字是用 PHP html_entity_decode 来的:
$author = html_entity_decode('顾铮𠀡', ENT_QUOTES, 'UTF-8');

环境:Mac OSX 10.10 + MySQL 5.6、ubuntu 10.04 + MySQL 5.5
3841 次点击
所在节点    MySQL
5 条回复
laoyuan
2015-03-05 08:10:51 +08:00
最关键的是 怎么解决呢。。
raofeng
2015-03-05 09:20:53 +08:00
```sql
CREATE TABLE IF NOT EXISTS `testx` ( `author` varchar(10) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
INSERT INTO `testx` (author) VALUES ('顾铮𠀡');
```
raofeng
2015-03-05 09:21:24 +08:00
用 utf8mb4
laoyuan
2015-03-05 09:24:48 +08:00
@raofeng 谢谢,我还纳闷呢,怎么冒出4个字节来,原来问题在这里
laoyuan
2015-03-05 13:43:33 +08:00
@raofeng 成功了,在php里连接数据库后加上 mysql_query("set names utf8mb4");
命令行里看到这个字是问号 ?,不过echo 到页面上正常的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174579

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX