- 论坛徽章:
- 0
|
本帖最后由 cenalulu 于 2012-08-23 09:44 编辑
刚看到一篇Mysql字符集的帖子, 顺道分享下最近业务上碰到的一个字符集问题.
我们的平台使用mysql-5.5.14 + php搭建, 同时php开放了api接口供iPhone/iPad等客户端调用.
偶然一次, 发现用户发布的数据被截断, 跟踪日志发现是4字节的utf8字符, 经查, mysql在5.5.3之前不支持4字节utf8字符.
由于我们的mysql版本支持4字节, 所以解决就是升级字符集为utf8mb4.
下面是解决问题过程中总结的一些现象:
4字节utf8字符的支持情况:
1. windows xp: 我所测试的xp系统都不支持4字节utf8字符, 浏览器用占位符显示
2. windows 7: 支持4字节utf8字符
3. mac os x: 支持4字节utf8字符
4. iPhone/iPad: 支持4字节utf8字符
场景:
1. php连接会话设置编码utf8, mysql后端字段为text character set utf8: 写入内容从4字节utf8字符处被截断
2. php连接会话设置编码utf8mb4, mysql后端字段为text character set utf8: 内容可以完整写入, 但是4字节utf8字符被替换为问号"?"
3. php连接会话设置编码utf8mb4, mysql后端字段为text character set utf8mb4: 完整支持4字节utf8字符
从平台支持上来看, 随着winxp的逐步淘汰, 对4字节utf8字符的支持还是有必要的.
官方手册对utf8mb4字符的说明中指出, utf8mb4是utf8的超集, 因此可放心升级. |
|