База данных MySQL хранит вопросительные знаки вместо специальных символов

Я пытаюсь отобразить ОЧЕНЬ специальные символы (например) внутри моего веб-сайта и сохранить их в своей базе данных. Когда я пишу специальные символы, подобные этим, они отображаются один раз, но когда я перезагружаю страницу и сервер получает строку из базы данных, она отображается как "????????????????????????? " Я пытался сделать много вещей, чтобы это исправить, но ни одна из них не сработала. Это не проблема визуализации, потому что заголовок установлен правильно:

<meta charset="utf-8">

Что я пытался сделать:

  • Установка кодировки по умолчанию для сервера в utf8.
  • Установка свертки базы данных / таблицы / столбца и набора символов в utf8mb4_unicode_ci
  • Изменение строки подключения на:
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

$db->query("SET character_set_results=utf8mb4");

mb_language('uni'); 

mb_internal_encoding('UTF-8');

$db->query("SET NAMES utf8mb4");

$db->set_charset('utf8mb4');

Но ничего из этого не сработало. Кроме того, я попытался (только для отладки) изменить строку в текстовом поле базы данных на, и я получил ошибку:

Предупреждение: #1300 Неверная строка символов utf8: 'F09D91'

Предупреждение: #1366 Неверное строковое значение: '\xF0\x9D\x91\xBB\xF0\x9D...' для столбца 'текст' в строке 1

Я действительно пробовал каждое решение, которое нашел здесь и за его пределами, но ничего не получалось. Любая помощь будет оценена.

1 ответ

Решение

Как обсуждено в комментариях.

Во многих случаях вам нужно разместить весь код, следующий
$db->query("SET character_set_results=utf8mb4"); до этой линии.

Также может помочь использование другой кодировки файлов.

Я должен был сделать это сам раньше, как ни странно. Это также может быть кодировка сервера по умолчанию, которая может где-то переопределять; У меня была эта проблема и раньше.

Кроме того, если вы запрашиваете куда-то, например, при выполнении SELECT, UPDATE или INSERT, тогда важно, чтобы коды кодирования были помещены перед запросом, в этом случае.

Другие вопросы по тегам