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)。

 

posted @ 2020-05-08 11:22  html55  阅读(6628)  评论(0编辑  收藏  举报