Неверное строковое значение при попытке передать emoji в БД, закодированную с utf8mb4 - PullRequest
0 голосов
/ 01 марта 2019

У меня есть база данных с кодировкой utf8mb4 и сопоставлением utf8mb4-bin.Таблица и столбец, в который я вставляю, также имеют такие свойства.Мой PHP-файл сохраняется в UTF-8 (без спецификации).Моя переменная $dsn, используемая для подключения к PDO, выглядит следующим образом: $dsn = 'mysql:host=127.0.0.1;dbname=vk_comments;port=3306;charset=utf8mb4;connect_timeout=15'.Кстати, я нахожусь на PHP 7.2.

И все же MySQL продолжает говорить, что он получил Incorrect string value.Как видите, я установил правильную кодировку везде.В чем еще может быть проблема?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Пример значения перед вводом: ? Точная ошибка, которую я получаю от MySQL: SQLSTATE[HY000]: General error: 1366 Incorrect string value: \u0027\\xF0\\x9F\\x98\\x8A\u0027 for column \u0027comment_text\u0027 at row 1

1 Ответ

0 голосов
/ 01 марта 2019

После $this->dbh = new PDO($dsn, $user, $password);

Мне пришлось добавить

$this->dbh->exec("set names utf8mb4");

Только этот работал.

...