MENU

使Typecho支持“21世纪甲骨文”

July 12, 2020 • Read: 908 • 学习充电

  在写下这篇文章之前,请允许我先发几个表情平复一下心情
😞😠😡😭😳😨🔑🚬😏😄😎

花心思写了一篇长文,结果发布之后文章只显示一句话,后面内容全部丢失!一点一点排查,发现是emoji表情造成的,从表情之后,所有内容全部不显示!FUCK,这是什么梗,使出看家本领(百度一下,你就知道)才找到原因,原来是数据库编码格式不兼容的问题。为了杜绝以后出现类似情况赶紧修复,并记录如下。

Typecho默认不支持emoji表情是由于编码的问题,只需要将默认的数据库编码utf8修改为utf8mb4即可,不过utf8mb4编码在PHP5.5以后才支持。

Emoji是一种在Unicode位于u1F601-u1F64F区段的字符。这个显然超过了目前常用的UTF-8字符集的编码范围u0000-uFFFF。在MySQL中,UTF-8只支持最多3个字节,而emoji是4个字节。这就导致如果你不修改数据库的话,typecho是无法支持Emoji表情的。

当然好消息是utf8mb4其实是完全兼容utf-8,修改后不会影响现有数据及后期数据。

1.修改数据库编码

在PhpMyadmin中选择typecho数据库,操作-->排序规则-->选择utf8mb4_unicode_ci然后执行。

2.修改表编码

执行以下sql语句

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;

3.修改typecho配置文件

在网站根目录找到config.inc.php拉到最下面找到这一行

'charset'   =>  'utf8', 

修改为

'charset'   =>  'utf8mb4', 

再打开网站就可以支持emoji了,emoji表情还是相当丰富的.

---The END---
  • 文章标题:使Typecho支持“21世纪甲骨文”
  • 文章作者:飞进的船
  • 文章链接:https://www.fjdc.xyz/xxcd/174.html
  • 版权声明:本站原创内容均采用《署名-非商业性使用-相同方式共享 4.0 国际》进行许可,转载请注明出处。

  • Archives QR Code Tip
    QR Code for this page
    Tipping QR Code