Мои сценарии определенно сохраняются в UTF-8.Я создаю экземпляр PDO с "{$this->engine}:host={$this->host};dbname={$this->name};charset=UTF-8"
.Мои таблицы используют InnoDB и сопоставляются с использованием utf8_general_ci.Мои страницы отправляются с заголовком Content-Type: text/html; charset=UTF-8
или эквивалентом <meta>
.
При использовании PDO для хранения символа €, исходящего либо из HTTP-ввода, либо из строкового литерала в исходном коде, я остаюсьс c3 a2 e2 80 9a c2 ac
в соответствии с MySQL Workbench 5.2.Извлечение этого из базы данных и отображение его на странице работает нормально.Тем не менее, в phpMyAdmin и Workbench я вижу €
.
При использовании этих двух инструментов для хранения € у меня остается e2 82 ac
, что, по-видимому, является правильным представлением UTF-8, но если япопробуйте получить и затем вывести это с помощью PHP, появится �.
Мой вопрос: откуда возникает это расхождение, и возможно ли, чтобы мои веб-страницы и инструменты базы данных работали безупречно?