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 @   html55  阅读(6909)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示