в запросе вставки MySQL я использовал ($text
отправляется $_POST
и колонка MESSAGE
в формате JSON):
$data = '{"mytext":".'$text'."}';
INSERT INTO xxxxx (MESSAGE) VALUES('$mytext');
я застрял со следующей проблемой:
Некоторые смайлики отображаются нормально, но некоторые с «?»
Я искал здесь ответ и обнаружил, что utf8mb4 должен быть установлен в базе данных, таблицах и столбцах.
Эта проблема это когда я пытаюсь следующее, которое содержит мое зарегистрированное сообщение:
ALTER TABLE xxxxx CHANGE column_name column_name JSON CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Результат выше
У вас есть ошибка в вашем синтаксисе SQL;
Я предполагаю, что это возможно только на Varchar()
колонка.
У вас есть идеи о том, как я могу сделать эту работу?
Спасибо
Некоторые смайлики отображаются нормально, но некоторые с «?»
Начните с поиска проблем, которые вызывают «вопросительный знак» из Проблемы с символами UTF-8; то, что я вижу, не то, что я храню
Особенно:
SHOW CREATE TABLE
чтобы увидеть, что это в данный момент.)Для дальнейшего обсуждения, пожалуйста, предоставьте
SHOW CREATE TABLE
прежде чем пытаться ALTER
, (Я подозреваю, что VARCHAR
Сейчас CHARACTER SET utf8
.)В руководстве говорится: «MySQL обрабатывает строки, используемые в контексте JSON, с использованием набора символов utf8mb4 и параметров сортировки utf8mb4_bin.», Я заключаю, что вам не нужно указывать ни набор символов, ни сопоставление для типа данных JSON
,
Других решений пока нет …