如何在MySQL数据库中支持完整Unicode

本文介绍了MySQL的utf8字符集仅支持部分UTF-8编码,导致无法存储某些Unicode字符,如星体符号。解决方案是迁移到utf8mb4,该字符集完全支持Unicode。迁移过程包括备份数据库、升级MySQL、修改数据库、表和列的字符集、检查列和索引最大长度、调整连接和服务器字符集,并修复和优化表。
摘要由CSDN通过智能技术生成

如何在MySQL数据库中支持完整Unicode
已发表 2012年7月30日·用MySQL标记,安全性,Unicode

替代标题:我们为正确存储U + 1F4A9 PILE OF POO(💩)所做的事情。

您是否utf8在数据库中使用MySQL的字符集?在这篇文章中,我将解释为什么您应该改用utf8mb4它,以及如何进行切换。

UTF-8
UTF-8编码可以表示Unicode字符集中的每个符号,范围从U + 000000到U + 10FFFF。那是1,114,112个可能的符号。(尚未为所有这些Unicode代码点分配所有字符,但这不会阻止UTF-8对其进行编码。)

UTF-8是可变宽度编码;它使用一到四个8位字节对每个符号进行编码。具有较低数字编码点值的符号使用较少的字节进行编码。这样,对于使用ASCII字符和其他BMP符号(其代码点范围从U + 000000到U + 00FFFF)的常见情况,UTF-8进行了优化,同时仍允许使用星体符号(其代码点范围从U + 010000开始)到U + 10FFFF)。

MySQL的 utf8
很长时间以来,我一直将MySQL的utf8字符集用于数据库,表和列,并假设它映射到上述的UTF-8编码。通过使用utf8,我可以将所需的任何符号存储在数据库中-或如此。

在写有关JavaScript内部字符编码的文章时,我注意到无法将U + 1D306 TETRAGRAM FOR CENTER(𝌆)符号插入该站点后面的MySQL数据库中。我尝试更新的列具有utf8_unicode_ci排序规则,并且连接字符集设置为utf8。

mysql>设置名称utf8; #只是强调将连接字符集设置为utf8
查询正常,受影响的行数为0(0.00秒)

。mysql> UPDATE database_name.table_name SET column_name ='foo𝌆bar’WHERE id = 9001;
查询正常,影响1行,1警告(0.00秒)
匹配的行:1已更改:1警告:1

mysql> SELECT column_name FROM database_name.table_name WHERE id = 9001;

  • ------------- +
    | column
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值