王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

让Typecho支撑 emoji 的显现

媒介

本日有用户回响反映文章发出后显现不全,我第一时间就想到是本身模板外链转内链功用的bug,由于之前有人反应过,厥后我修复了,我认为照样它有问题,排查了下后发明并非,然后背景一看文章内容,发明基础全消逝了,这就让我想起来hran大佬2015年发过的文章,因而乎转载

正文

文章转自:https://get233.com/archives/show-emoji-in-typecho.html

刚入手下手玩 Typecho 的时刻就被狠狠的坑了一次,遐想昔时,我兴冲冲的写了人生第一篇大肠文(大雾),只由于中心不小心手贱用了几个 emoji , 提交后发明用 emoji 今后的内容全没了!全没了!啊!没了!啊!!

无法勤奋回想着又草草写了篇没鸟用的文章就洗洗睡了,当时就下定决心一定要处理这个问题(并没有,实际上是本日太闲→_→),因而在隔了一年的本日终究入手下手。。。。

实在也不能说 Typecho 不支撑,毕竟是字符集的锅,跟 Typecho 没有关系,总得来说照样太笨,毕竟连 Taylor 都没救出来。。。

之前用的是 UTF-8 的编码,在 MySQL 中,UTF-8 只支撑最多 3 个字节,而 emoji 是 4 个字节,所以就涌现了像上面那种惨不忍睹的问题。

晓得问题所在今后就好办多了:

修正数据库 charsetutf8mb4

alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci;alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci;alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci;alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci;alter table typecho_options convert to character set utf8mb4 collate utf8mb4_unicode_ci;alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci;alter table typecho_users convert to character set utf8mb4 collate utf8mb4_unicode_ci;

修正 Typecho 配置文件中数据库定义参数中的 charsetutf8mb4

$db->addServer(array (    'host'      =>  localhost,    'user'      =>  'me',    'password'  =>  'my_password',    'charset'   =>  'utf8mb4', //修正这一行    'port'      =>  3306,    'database'  =>  '蛤?'), Typecho_Db::READ | Typecho_Db::WRITE);

搞定~
啊对了,关于不支撑 emoji 的装备上大概会显现为框框吧,但至少不会像之前直接毫无人道的砍掉 (Mysql 的锅) emoji 今后的内容要好上太多了。。。

下一篇: 今日优良案牍

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。