最近在写留言板功能,发现将emoji直接保存到mysql数据库中emoji会变成问号,原因是MySQL数据库中的 “utf8” 字符集并不完全符合 UTF-8 的标准。

尽管现在的大多数可见字符都可以在 utf8 字符集中用三个字节表示,但在 Unicode 6 系列编码中,一些字符需要四个字节,其中包括了众所周知的 emoji 表情。因此,如果数据库使用了默认的字符集设置,就无法正确地存储 emoji 表情。

如何解决MySQL存储Emoji表情

更改数据库表的字符集和编码

SQL
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

后端连接数据库的配置正确

在后端连接数据库的配置文件中,确保设置了正确的字符集和编码。确保与数据库的连接使用的字符集和编码与数据库表一致。

JavaScript
	const connection = mysql.createConnection({
	  host: 'xxxxx',   //主机地址,默认localhost
	  user: 'xxxx',      //数据库账号名
	  password: 'xxxxx',   //数据库密码
	  database: 'xxxxx',     //连接的数据库名
	  charset:"utf8mb4" // 数据库字符集
	});

配置OK后,emoji存储成功,再也不是一堆问号了

阅读进度 0%