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
)。
分类:
Mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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语句:使用策略模式优化代码结构