不要在MySQL数据库中使用UTF-8编码

如果你使用MySQL数据库 , 请记住一点:你应该总是使用utf8mb4编码 , 而不是utf8编码 。
MySQL编码实现标准的UTF-8字符编码可以用4个字节去编码最多21位字符 , 这几乎包括了世界上所有的字符集了 , 然而在MySQL里实现的UTF-8编码使用3个字节去编码最多16位字符(即只能存放Unicode编码从0x0000到0xFFFF的字符) 。好在MySQL在2010年实现了一个以utf8mb4命名的UTF-8实现 , 并在5.5.3版本进行了发布 。简单说utf8mb4是utf8的超集并完全兼容utf8 , 能够用4个字节存储更多的字符 。
Unicode编码Unicode并不是真正意义上的编码技术 , 它只是将世界上的所有字符定义了一个编号并形成标准;它规定了字符的二进制代码 , 却没有规定这个二进制代码应该如何存储 。
UTF-8编码我们常用的UTF-8、GBK等编码技术(准确来说应该是字符编码存储技术)的核心就是规定了Unicode的二进制代码应该如何存储 。比如说我把Unicode的二进制代码高位补0后存储起来也是一种编码方案 , 只不过这种方案太low了 。
UTF-8的编码规则很简单 , 只有二条:
(1)对于单字节的符号 , 字节的第一位设为0 , 后面7位为这个符号的Unicode码 。因此对于英文字母 , UTF-8编码和ASCII码是相同的 。
2)对于n字节的符号(n>1) , 第一个字节的前n位都设为1 , 第n+1位设为0 , 后面字节的前两位一律设为10 。剩下的没有提及的二进制位 , 全部为这个符号的 Unicode 码 。

不要在MySQL数据库中使用UTF-8编码

文章插图
 

【不要在MySQL数据库中使用UTF-8编码】


    推荐阅读