Запрос специальных символов из MySQL DB - PullRequest
0 голосов
/ 08 сентября 2018

Я использую PHP 7.1.8 и пытаюсь запросить свою базу данных. Однако сериализованные массивы имеют специальные символы, которые отображаются следующим образом:

Найдите ниже пример моего кода:

// connect to db
$dbname = $conf['dbName'];
$dbuser = $conf['user'];
$dbpass = $conf['pwd'];
$dbhost = $conf['host'];

// Create connection
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);

$arr = $conn->query("SELECT * FROM postmeta WHERE post_id = "100" and meta_key = 'val' LIMIT 1;")->fetch_assoc()["meta_value"];

При прямом запросе к базе данных я получаю правильное значение для . Смотрите ниже мое `` $ arr`:

enter image description here

Эта ошибка в основном приводит к тому, что я не могу unserialize данные правильно.

Любые предложения, как исправить эту ошибку?

Я ценю ваши ответы!

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
/* change character set to utf8 */
if (!$conn->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $conn->error);
    exit();
} else {
    printf("Current character set: %s\n", $conn->character_set_name());
}
$arr = $conn->query("SELECT * FROM postmeta WHERE post_id = "100" and meta_key = 'val' LIMIT 1;")->fetch_assoc()["meta_value"];

Пожалуйста, проверьте вывод.

0 голосов
/ 08 сентября 2018

Проблема заключается в сопоставлении.MySQL возвращает определенные символы (символ температуры), которые не поддерживаются текущей кодировкой.

Попробуйте выполнить этот запрос непосредственно перед выбором: set names 'utf8';

Кроме того, если вы показываетеэти данные в каком-то ответе HTML, не забудьте добавить charset=UTF-8 к вашему метатегу Content-type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...