用Unicode迎接未来
2014-06-17 19:51
169 查看
项目中使用了emoji,然后,问题产生了,后端MySQL数据库无法存储emoji字符,悲了个剧。 emoji是Unicode字符集的子集,Unicode的使用应该很普遍了,怎么会遇到这样的问题呢?这还要从头说起。 Unicode是为了解决全球字符的统一编码,用这一个字符集就可以容纳得下全球各语种的字符和特殊符号。与之对应的是GB-2312或GBK这样的国标编码,用于对中文字符进行编码的。现在用GB-2312编码越来越少了。 但是Unicode只是二进制编码,字符的转换和传输还是需要再定义交换码,这就是通常所说的UTF-8、UTF-16、UTF-32……用于对二进制格式的Unicode字符进行字符表示的编码,最常用的是UTF-8。 再来说UTF-8,它是变长的编码,采用1-6个字节来编码一个Unicode字符,比如Ascii码就用1个字节,汉字通常用3个字节,emoji是4个字节。 问题就出在这了。早期,MySQL支持3个字节的UTF8编码存储,所以一直相安无事。但是随着Unicode的发展,emoji大量的使用,很多字符需要用4个字节的UTF8编码才能表示了,于是出现了这些字符进入MySQL数据库中被截断或者是乱码的现象。 处理的办法是把MySQL升级到5.5.4以上,升级字符集为utf8mb4。 就在今天,Unicode公布了7.0新标准,至少新增了2834个字符,包括新的emoji表情符,以后要盯着Unicode了,用全球化眼光处理问题,未来会少一些麻烦。
——欢迎转载,请注明原文出处 http://blog.csdn.net/caowenbin ————欢迎关注微信号“曹文斌的软件思考”,共同探讨软件人生——
——欢迎转载,请注明原文出处 http://blog.csdn.net/caowenbin ————欢迎关注微信号“曹文斌的软件思考”,共同探讨软件人生——
相关文章推荐
- 用Unicode迎接未来
- 帝企鹅变形记:拥抱变革 迎接未来
- 迎接新的未来
- 关注未来,迎接wave--(2)
- 总结过去,展望未来,迎接2018
- 迎接就业挑战 展望美好未来
- AMD迎接变革:加速OpenCL的未来
- 迎接新的时代——读《工业4.0时代,怎样为孩子筹备未来的教育?》有感
- 总结过去,迎接未来,我们一直在路上
- 今天开始得写一下博客了,总结过去开创未来,以积级的心态迎接挑战!
- AMD迎接变革:加速OpenCL的未来
- 告别过去,迎接未来
- 关注未来,迎接wave--(1)
- 关注未来,迎接wave--(3)
- 迎接新未来
- Gavin King 预测EJB3的未来
- 写给未来的自己——好歌词
- 未来搜索新趋势?谷歌推个性化与自动结果搜索
- 压缩算法未来以企业应用为主
- PHP处理微信中带Emoji表情的消息发送和接收(Unicode字符转码编码)