mysql,插入内容中有特殊符号报错,怎么解决?
原本以为utf8是万能的了,新建数据库时选择了如下图
然而,当往数据库中插入的数据有特殊符号时,内容如下:
🌽玉米 🍒樱桃
无情的报错开始了。
原来历史原因,mysql数据库字符集utf8不是真正的utf8,是占用3个字节的.
现在,新建数据库时要选择utf8mb4,这才是真正的utf8,如下图
另外,原来连接数据库中
1 $conn=mysqli_connect("127.0.0.1","用户名","密码","test_db1"); 2 if (mysqli_connect_errno($conn)) { 3 echo "连接 MySQL 失败: " . mysqli_connect_error(); 4 } 5 mysqli_query($conn,"SET NAMES utf8mb4");
SET NAMES utf8 改为 SET NAMES utf8mb4
实验一下,插入数据库正常
————————————————————
在 MySQL 数据库中,存在多个与 Unicode 相关的字符集和排序规则。
一般情况下应该使用 utf8mb4
字符集,这才是 MySQL 中真正的UTF-8
编码(如第一节所言,这里字符集和编码又一次互指了)。相应的所谓 utf8
字符集是非标准的,其中单个字符最多只能编码为 3 个字节,因此很多字符无法保存。
MySQL 中排序规则应该使用 utf8mb4_unicode_ci
,而不是 utf8mb4_general_ci
。后者性能稍微高于前者,但算法不符合 Unicode 标准,可能在处理某些语言文字时出现错误的结果。utf8mb4_unicode_ci
对应 Unicode v4.0,较新版本的 MySQL 还同时支持 v5.2(utf8mb4_unicode_520_ci
),v9.0(utf8mb4_0900_ai_ci
)。