【发布时间】:2015-07-29 10:39:28
【问题描述】:
我正在尝试将表情符号存储到我服务器中的数据库中。我使用 AWS EC2 实例作为服务器,我的服务器详情如下:
操作系统:ubuntu0.14.04.1
MySQL 版本:5.6.19-0ubuntu0.14.04.1 - (Ubuntu)
数据库客户端版本:libmysql - mysqlnd 5.0.11-dev - 20120503
我使用以下 SQL 在服务器中创建了一个数据库测试和表表情符号:
CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `test`;
CREATE TABLE IF NOT EXISTS `emoji` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`text` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1;
当我尝试执行以下插入时,出现警告并且数据未正确存储:
INSERT INTO `test`.`emoji` (`id` , `text`) VALUES (NULL , '???? ???? ???? ????');
插入的行 ID:3
警告:#1366 不正确的字符串值:'\xF0\x9F\x91\x86 \xF0...' for column 'text' at row 1
文本列中存储的值为:???? ??? ??? ????
相同的场景适用于我的本地数据库,并且值已正确存储。除了操作系统(Windows)之外,我本地的几乎所有配置都相似。
【问题讨论】:
-
请
SHOW CREATE TABLE test.emoji\G-- 我想看看你创建它后它是否被破坏了。 -
Wat 提示您运行失败的
INSERT是什么提示? (F09F9186 看起来是正确的。) -
CREATE TABLE
emoji(idint(10) unsigned NOT NULL AUTO_INCREMENT,textvarchar(255) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=4默认字符集=utf8mb4 -
请提供
SELECT text, HEX(text) FROM emoji(针对有问题的行)。发生了一些奇怪的事情。 -
1 warning-- 再次运行查询,然后及时执行SHOW WARNINGS;
标签: mysql character-encoding collation emoji utf8mb4