Emojis заменяется вопросительными знаками при вставке в базу данных - PullRequest
0 голосов
/ 07 декабря 2018

У меня проблема с неправильной передачей смайликов на мой промежуточный сайт.Некоторые смайлики заменяются знаком вопроса, некоторые нет.Это в основном влияет на сообщения в блоге.Я не уверен, что является причиной этого, и надеялся, что кто-то может указать мне правильное направление для решения этой проблемы!Может ли это быть что-то с кодировкой символов в базе данных?

Например: Эти работы: ☀️ ☔️❤️✨ Они заменяются знаком вопроса: ???????? и показывают эту ошибку:

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;

1 Ответ

0 голосов
/ 07 декабря 2018

Определение таблицы правильное.

Откуда вы пытаетесь вставить?Убедитесь, что соединение использует utf8mb4-charset.Из командной строки используйте параметр --default-character-set = utf8mb4.

См. db-fiddle

...