typecho ブログを作成した後、いくつかの絵文字を挿入すると、ページがレンダリングされた後に絵文字が表示されず、絵文字の後のコンテンツがすべて消えてしまい、ユーザーエクスペリエンスが非常に悪くなります。
絵文字が表示されない原因は、uft-8 のエンコーディングの問題であり、小さな絵文字を認識できないため、utf8mb4 に変更する必要があります。
ステップ 1:データベースにアクセスする#
まず、ブログのバックエンドにログインし、[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;
コードをコピーして、右下の [実行] をクリックします。
ステップ 2: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);
記事のバックエンドで絵文字を再入力し、保存してページに戻ると、絵文字が正常に表示されます。