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

时间:2018-12-07 18:51:03

标签: mysql sql emoji

我遇到表情符号无法正确转移到我的登台站点的问题。有些表情符号被问号代替,有些则没有。这主要影响博客文章。我不确定是什么原因导致的,并希望有人可以指出正确的方向来解决这个问题!数据库中的字符编码可能与之有关吗?

例如: 这些工作:☀️☔️❤️✨ 这些将替换为问号: 并显示此错误:

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

MY 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;

1 个答案:

答案 0 :(得分:1)

表定义正确。

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

请参见db-fiddle