使Typecho支持Emoji表情

最近写文章的时候用到了emoji,发现报错:Database Query Error

解决办法

1、进入数据库,直接运行下列语句:

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

2、修改数据库的配置文件

网站根目录数据库配置文件config.inc.php,大约在60行

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  ...
  'charset' => 'utf8mb4',  // 将原来的utf8修改为 utf8mb4
  ...
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);
打赏
评论区
头像
    头像

    亲测成功,感谢!

    头像
    yitzu
      

    怎么进入数据库运行啊,进入数据库在哪运行啊

      头像
      枫叶
        
      @yitzu

      我也想问,数据库里找了好一会儿都没找到。
      谷歌也没谷歌到东西。

        头像
        Veen Zhao
          
        @枫叶

        有个控制台,进入后直接执行相关命令就行了

    头像
    小邯郸
      

    这个原因就是因为utf8在mysql里面不是真正的utf8,这个只能保存3个字节,而utf8mb4是后面更新的,能保存四个字节,而且官方也没有更新这个的说明。麻蛋,我开发选的utf8,保存表情死都保存不上。最后才懂。搞我。

    头像
    571
      

    我这么做了也没用呀,用的chrome,这么弄了还是方框

      头像
      Veen Zhao
        
      @571

      其他浏览器正常吗?先排查是不是浏览器问题

        头像
        571
          
        @Veen Zhao

        换了浏览器也一样的显示不出来