解决Typecho带有Emoji表情Database Query Error报错的处理方法
2023-5-3 16:18:0 Author: blog.upx8.com(查看原文) 阅读量:16 收藏

今天在进行文章回复评论的时候,看到手机输入法有个表情功能,就发了几个表情进行提交,在提交后系统出现了「Database Query Error」报错,叔可忍婶不可忍,都移动互联网时代了,不能因为emoji 表情符号出现报错,既然报错就试着解决吧。

解决过程

1、刚才的操作是发布了Emoji表情,emoji 是 4 个字节;

2、Typecho的数据库选用了 UTF-8 的编码,在 MySQL 中,UTF-8 只支持最多 3 个字节;

3、修改数据库 charset 为 utfmd4:

4、Mysql 运行以下编码,支持全局都能插入emoji表情等。

运行以下代码:


2.修改数据库配置文件
打开网站根目录数据库配置文件 config.inc.php
将 charset 的值由 utf8 改为 utf8mb4 。

修改好后保存即可。

延伸知识

1、MySQL在5.5.3之后增加了这个utf8mb4的编码,所以最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本;

2、mb4就是most bytes 4的意思,可以用来兼容四字节的unicode,存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。如果你要存互联网emoji表情,就需要utf8mb4,而不是utf-8;

3、utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换;

4、MySQL数据库的 “utf8”并不是真正概念里的 UTF-8,MySQL中的“utf8”编码只支持最大3字节每字符。真正的大家正在使用的UTF-8编码是应该能支持4字节每个字符,MySQL的开发者没有修复这个bug。他们在2010年增加了一个变通的方法:一个新的字符集“utf8mb4”,他们并没有对外公布(可能因为这个bug有点尴尬)。现在很多指南推荐用户使用“utf8”其实都错了;

5、建议MySQL和MariaDB用户使用“utf8mb4”而不是“utf8”,毕竟现在是不管使用 Anroid 设备,还是 iOS 设备,如果插入包含有 emoji 表情符号的记录时就报错,还是很尴尬的;

6、最重要一点,对数据库操作前,记得备份数据。


文章来源: https://blog.upx8.com/3498
如有侵权请联系:admin#unsafe.sh