欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

用Unicode迎接未来_MySQL

程序员文章站 2022-06-06 19:52:04
...
项目中使用了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 ————欢迎关注微信号“曹文斌的软件思考”,共同探讨软件人生——