刚开始玩 Typecho 的时候就被狠狠的坑了一次,遥想当年,我兴冲冲的写了人生第一篇大肠文(大雾),只因为中间不小心手贱用了几个 emoji , 提交后发现用 emoji 之后的内容全没了!全没了!啊!没了!啊!!😂😂😂
无奈努力回忆着又草草写了篇没鸟用的文章就洗洗睡了,当时就下定决心一定要解决这个问题(并没有,其实是今天太闲→_→),于是在隔了一年的今天终于开始。。。。😳
其实也不能说 Typecho 不支持,毕竟是字符集的锅,跟 Typecho 没有关系,总得来说还是太笨,毕竟连 Taylor 都没救出来。。。🙃🙃
之前用的是UTF-8
的编码,在 MySQL 中,UTF-8
只支持最多3个字节,而 emoji 是4个字节,所以就出现了像上面那种惨绝人寰的问题。
知道问题所在以后就好办多了:
修改数据库 charset 为
utf8mb4
: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 配置文件中数据库定义参数中的 charset 为
utf8mb4
:$db->addServer(array ( 'host' => localhost, 'user' => 'me', 'password' => 'my_password', 'charset' => 'utf8mb4', //修改这一行 'port' => 3306, 'database' => '蛤?' ), Typecho_Db::READ | Typecho_Db::WRITE);
- 搞定😈~
啊对了,对于不支持 emoji 的设备上大概会显示为框框吧,但至少不会像之前直接毫无人性的砍掉( Mysql 的锅) emoji 之后的内容要好上太多了。。。
最近有点喜欢粗体字了?。。。。
????????????????试试不说话,现在我开发都用utf8mb4了
????
话说评论系统跟博客不是同一个????????????
。