emojis在数据库中插入时被问号替换

s5a0g9ez  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(329)

我遇到了一个emojis无法正确传输到我的暂存站点的问题。有些表情符号被问号代替,有些没有。主要是影响博客帖子。我不知道是什么原因造成的,希望有人能给我指出解决这个问题的正确方向!可能是数据库中字符编码的问题吗?
例如:这些工作:☀️ ☔️❤️✨ 这些被一个问号所取代:????????并显示此错误:

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

yvfmudvl1#

表定义正确。
你想从哪里插入?确保连接使用utf8mb4字符集。从命令行使用--default character set=utf8mb4选项。
见db小提琴

相关问题