插入数据库时​​表情符号被问号替换

Emojis replaced by question marks when insert in Database

我遇到了表情符号未正确传输到我的暂存站点的问题。有些表情符号被问号代替,有些则没有。它主要影响博客文章。我不确定是什么原因造成的,希望有人能指出我正确的方向来解决这个问题!会不会是数据库中字符编码的问题?

例如: 这些工作:☀️☔️❤️✨ 这些被问号取代: 并显示此错误:

1366 Incorrect string value: '\xF0\x9F\x98\x83\xF0\x9F...' for column 'text' at row 1

我的SQL代码:

CREATE TABLE `posts` (
  `id` int(11) UNSIGNED NOT NULL,
  `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',
  `text` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
  `status` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',
  `timestamp` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

有 运行 并尝试过这个 SQL 代码:

ALTER TABLE posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

ALTER DATABASE test CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

table 定义正确。

您要从哪里插入?确保连接使用的是 utf8mb4-charset。从命令行使用 --default-character-set=utf8mb4 选项。

db-fiddle