标题: MySQL的Unicode支持
作者: Demon
链接: https://demon.tw/programming/mysql-unicode-support.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
作为广泛使用的数据库,MySQL对Unicode有着很好的支持。
1、MySQL 6.0版之前的Unicode支持
在MySQL 6.0.4版之前,其Unicode支持仅包括Basic Multilingual Plane(BMP,基本多语言方案)里的字符,最多只有65536个字符。没有被收录到BMP方案里的其他字符是没有任何支持的。Unicode通过两种字符集提供了一个比较完善的解决方案。
- ucs2字符集对应着Unicode USC-2编码方案。它使用两个字节来表示一个字符,高位字节排列在前,这种字符集无法表示需要用两个以上字节才能表示的字符。
- utf8字符集采用了一种长度可变的格式,使用一到三个字节来表示一个字符,它对用着UTF-8编码方案。
2、MySQL 6.0版之后的Unicode支持
从MySQL 6.04版开始,其Unicode支持把BMP方案所遗漏的补充字符也收录了进来,这么做的效果如下。
- usc2字符集在MySQL 6.0系列版本里未做改动,每个字符仍占两个字节。新增加的utf16和utf32字符集类似于utf8,但扩充了对补充字符的支持。在utf16字符集里,BMP仍占两个字节(和usc2字符集一样),补充字符占四个字节。在utf32字符集里,所有字符都占四个字节。
- 以前,每个utf8字符占一到三个字节。增加了补充字符之后,每个utf8字符占一到四个字节。
微信赞赏支付宝赞赏
随机文章: