pexels-mariia-kamenska-756799.jpg

I. 主理人序

这篇文章为什么:为什么要写?因为博主在整理的一篇文章中混入了奇怪的emoji,最终导致全文 destroy;WTF;

II. Emoji在哪里

https://getemoji.com/

😀 😃 😄 😁 😆 😅 😂 🤣 🥲 ☺️ 😊 😇 🙂 🙃 😉 😌 😍 🥰 😘 😗 😙 😚 😋 😛 😝 😜 🤪 🤨 🧐 🤓 😎 🥸 🤩 🥳 😏 😒 😞 😔 😟 😕 🙁 ☹️ 😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾

III. 存储字符集 utf8 和 utf8mb4 介绍

utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8 字符,也就是 Unicode 中的基本多文本平面。要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3(mysql)版本以后的才支持。

数据库默认字符集不是 utf8mb4,那么可以在创建数据库时指定字符集:(忽略此步骤,因为你的博客已经在运转了,不存在新建数据库)
CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

IV. MySQL-修改数据库编码格式为utf8mb4

在进行此步骤前,你可以进行数据库备份;

1.登录 MySQL;

mysql -u root -p
#输入数据库登录密码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| typecho            |
+--------------------+
1 rows in set (0.01 sec)

2.查看数据库编码格式;登录MySQL后可以使用show variables like 'character%'; 查看数据库编码格式,对应变量名为:character_set_database,博主这里结果为:utf8mb4,已经修改好了;

mysql> show variables like 'character%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8mb4                          |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8mb4                          |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

2.1查看具体数据库(如typecho)的编码格式show create database example_db;

mysql> show create database typecho;
+----------+---------------------------------------------------------------------+
| Database | Create Database                                                     |
+----------+---------------------------------------------------------------------+
| typecho  | CREATE DATABASE `typecho` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+---------------------------------------------------------------------+
1 row in set (0.00 sec)

3.在本文中,名为typecho的数据库是博客对应的数据库(当然,具体以你命名的数据库名称为准);可通过以下命令修改已经存在的 database 预设值;

ALTER DATABASE typecho CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

这样名为 typecho 数据库就可以把 编码格式从 utf8修改为 utf8mb4了;

V. Typecho-配置config.inc.php以使用Emoji

1.进入网站根目录,找到并编辑 config.inc.php;编辑前记得备份;

cp config.inc.php config.inc.php.bak

2.编辑 config.inc.php;

/** 定义数据库参数 */
$db = new Typecho_Db('Pdo_Mysql', 'typecho_');
$db->addServer(array (
  'host' => 'localhost',
  'user' => 'root',
  'password' => '******',
  'charset' => 'utf8',
  'port' => '3306',
  'database' => 'typecho',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

'charset' => 'utf8',中的 utf8 改为 utf8mb4

🤣

VI. 重启lnmp及FAQ注意事项

重启 lnmp,新建一篇文章尝试插入emoji看看,😈;

以上。

VII. 附注

1.MySQL几种编码格式的区别(utf8、utf8mb4、utf8mb4_general_ci、utf8mb4_unicode_ci、utf8mb4_0900_ai_ci)
2.修改 mysql charset 編碼
3.修改MySQL的字符集为utf8mb4

最后修改:2021 年 10 月 12 日 12 : 10 PM