Я пытаюсь сохранить смайлики в базе данных на своем сервере. Я использую экземпляр AWS EC2 в качестве сервера, сведения о моем сервере перечислены ниже:
ОС: убунту0.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 , '???? ???? ???? ????');
Идентификатор вставленной строки: 3
Предупреждение: #1366 Неверное строковое значение: '\xF0\x9F\x91\x86 \xF0...' для столбца "текст" в строке 1
В текстовом столбце хранится следующее значение: ???? ???? ???? ????
Тот же сценарий работает для моей локальной базы данных, и значения сохраняются правильно. Почти все конфигурации аналогичны моей локальной, кроме ОС (Windows).
SHOW CREATE TABLE test.emoji\G
-- я хочу посмотреть, не испортился ли он каким-то образом после того, как вы его создали. - person Rick James   schedule 18.05.2015INSERT
, который не работает? (F09F9186 выглядит правильно.) - person Rick James   schedule 18.05.2015emoji
(id
int(10) unsigned NOT NULL AUTO_INCREMENT,text
varchar(255) NOT NULL, PRIMARY KEY (id
)) ENGINE=InnoDB AUTO_INCREMENT=4 CHARSET ПО УМОЛЧАНИЮ=utf8mb4 - person Code Help   schedule 18.05.2015SELECT text, HEX(text) FROM emoji
(для рассматриваемой строки). Происходит что-то странное. - person Rick James   schedule 18.05.2015Query OK, 1 row affected, 1 warning (0.00 sec)
- person Code Help   schedule 18.05.20151 warning
-- снова запустите запрос, затем быстро выполнитеSHOW WARNINGS;
- person Rick James   schedule 18.05.2015+-----------------------------------+---------------------------------------------------+ | text | HEX(
текст) | +-----------------------------------+---------------------------------------------------+ | ???? ???? ???? ???? | 3F3F3F3F203F3F3F3F203F3F3F3F203F3F3F3F +-----------------------------------+--------------------------------------------------------------------+
- person Code Help   schedule 18.05.2015????
? Какой из них дал вам # 1366? - person Rick James   schedule 18.05.2015latin1
, что явно не так. - person Rick James   schedule 18.05.2015root
? - person Rick James   schedule 18.05.2015| Variable_name | Value | | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
- person Code Help   schedule 18.05.2015