免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5906 | 回复: 0

【分享】Mysql中4字节UTF8字符集问题 [复制链接]

论坛徽章:
0
发表于 2012-08-23 01:08 |显示全部楼层
本帖最后由 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的超集, 因此可放心升级.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP