• 用Unicode迎接未来


         项目中使用了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 ——
    ——欢迎关注微信号“曹文斌的软件思考”,共同探讨软件人生——
  • 相关阅读:
    微信公众号支付,iframe跨域
    QQ小程序
    米大师支付
    window下安装phalcon
    laravel 控制器多个方法共用一个路由
    Elasticsearch查询语法
    【机器学习基础】相似度计算之杰卡德相似度
    【机器学习基础】相似度计算之Dice系数
    【leetcode_medium】54. Spiral Matrix
    【leetcode_easy】1189. Maximum Number of Balloons
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4491923.html
Copyright © 2020-2023  润新知