в запросе на вставку 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
.