<返回更多

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

2020-09-02    
加入收藏

如果你使用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编码

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>