当前位置:Gxlcms > mysql > 用Unicode迎接未来_MySQL

用Unicode迎接未来_MySQL

时间:2021-07-01 10:21:17 帮助过:22人阅读

项目中使用了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 ————欢迎关注微信号“曹文斌的软件思考”,共同探讨软件人生——

人气教程排行