昨天的时候,杜老师留言说有错别字,注射器写错了。我在手机上改的时候,添加了 一个💉的图标。在文章中是没有问题的:
但是呢,在评论回复的时候出错了,提示无法在数据库中保存注释信息,好像是这么个错误,当时没截图,具体的错误信息忘记了。嘻嘻。
对于这种智障错误,那肯定是不能忍的啊。emoji 表情,本质上还是 unicode 字符,所以这个保存不了猜测还是数据库编码和配置问题导致的。
绘文字(日语:絵文字/えもじ emoji)是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在中国,emoji通常叫做“小黄脸”,或者直称emoji在NTTDoCoMo的i-mode系统电话系统中,绘文字的尺寸是12×12 像素,在传送时,一个图形有2个字节。Unicode编码为E63E到E757,而在Shift-JIS编码则是从F89F到F9FC。基本的绘文字共有176个符号,在C-HTML4.0的编程语言中,则另增添了76个情感符号。最早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。
上文是百度百科的介绍,那么知道了问题的关键,要解决也应该不难,把数据库连接这整理字符集改成utf8mb4_unicode_ci
修改 wp 配置文件,修改数据库连接配置为:
/** 创建数据表时默认的文字编码 */ define('DB_CHARSET', 'utf8mb4'); /** 数据库整理类型。如不确定请勿更改 */ define('DB_COLLATE', 'utf8mb4_unicode_ci');
另外 wp 貌似还有个 emoji 编码的功能,可以进行编码存储。但是这个需要添加代码,进行wp_encode_emoji之后 存储。
也没啥太大必要吧。
utf8mb4对应的排序字符集有utf8mb4_unicode_ci、utf8mb4_general_ci. utf8mb4_unicode_ci和utf8mb4_general_ci的对比: 准确性: utf8mb4_unicode_ci是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序 utf8mb4_general_ci没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致。 但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。 性能 utf8mb4_general_ci在比较和排序的时候更快 utf8mb4_unicode_ci在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。 但是在绝大多数情况下发,不会发生此类复杂比较。相比选择哪一种collation,使用者更应该关心字符集与排序规则在db里需要统一。
嗯,现在可以在留言中使用 emoji 表情了~~
19 comments
表真少啊,我最起码25起步
哈哈哈,这个截图是测试用的改插件的wp。我的实际数据库已经远超这些了。
怪不得昨天晚上访问的时候显示数据库出错了
嗯嗯,应该你访问的时候我在改数据库的配置。
这头图,差点社死。幸好打开时旁边没人
穿的蛮多的呢~嘻嘻
typecho也有这个毛病,之前不支持emoji,也是数据库编码问题。
这个应该和wp一样,改下配置以及数据库的编码格式也可以解决。
我的emjio表情都改成图片了
酱紫,我现在都支持。就先这样吧。
你还会手动改别人的错别字,啊哈哈。
wp做这样的兼容是因为它是最广泛的建站程序呀。比如一些主机提供了一键安装 wp,但没有手动修改数据库的权限。
但誓为什么药改别人的别错字啊,是会南受妈?🐶
这个,哈哈哈。当然不会改啊。只改自己的。
老杜,你药不药姐摸可耐!!!
介个嘛,嘻嘻。问他知己啦~~
嗯嗯,这么一说确实是。兼容性是最主要的。
过来试试效果
说起评论,我觉得不加图片上传,或者加审核图片上传是明智的,有人用crisp给我发奇怪的图,我从震惊到惊恐再到无法形容,就是很恐怖,万一有人给我发血腥的图片,我觉得心理都不太好了,突然觉得审核管制挺不错的,至少让我精神还算正常~
嗯嗯。我的不能上传图片,但是可以外联外部图片。不过一旦带了连接就会自动到审核清单内。