typecho ブログを作成した後、いくつかの絵文字を挿入すると、ページがレンダリングされた後、絵文字が表示されず、絵文字の後の内容がすべて消えてしまい、体験が非常に悪くなります。
絵文字が表示されない原因は uft-8 エンコーディングの問題で、絵文字を認識できず、utf8mb4 に変更する必要があります。
第一步、データベースに入る#
まず、ブログのバックエンドのデータベースにログインし、次に 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;
そのままコピーして、右下の実行をクリックします。
第二步、typecho 設定ファイルを変更する#
私が使用している宝塔パネルで、左側の サイト
をクリックし、次にこのサイトのルートディレクトリに入ります。入ったら、config.inc.php
というファイルを見つけて、下にスクロールします。
**'charset' => 'utf8',
** の下に、より直感的に表示するためにコメントアウトし、再度書き直しました。実際の操作では、utf8
を utf8mb4
に変更するだけです。
/** データベースパラメータを定義 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
'host' => 'localhost',
'user' => 'blog',
'password' => 'blog',
/** 'charset' => 'utf8', */
'charset' => 'utf8mb4',
'port' => '3306',
'database' => 'blog',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);
記事のバックエンドで再度絵文字を入力し、保存してページに戻ると、絵文字が正常に表示されました。