Вопрос

Мои скрипты определенно сохраняются в 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 для хранения характера a €, исходящие из HTTP-ввода, либо строкового литерала в исходном коде, я остался с c3 a2 e2 80 9a c2 ac Согласно MySQL Workbench 5.2. Получение этого из базы данных и отображение его на странице работает нормально. И все же в Phpmyadmin и Workbench я вижу €.

При использовании этих двух инструментов для хранения A €, я остался с e2 82 ac, по-видимому, является правильным представлением UTF-8, но если я попытаюсь получить, а затем выводить это с PHP, отображается.

Мой вопрос в том, откуда возникает это расхождение и возможно ли мои веб-страницы и инструменты баз данных оба работают безупречно?

Это было полезно?

Решение

Директива Charset в DSN на самом деле применяется к MSSQL. Я просто нужно было выполнить SET NAMES. Отказ Извини за это.

Я достиг этого:

parent::__construct("{$this->engine}:host={$this->host};dbname={$this->name}",
                    $this->user, $this->password,
                    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));

Другие советы

Просто конвертируйте HTML-объект € для Superfix (но вы можете получить проблему с другими специальными символами)

другая сторона проблемы (и более конкретно) проверяет mysql charace_set_server. и наиболее распространенной причиной charace_set_client. - смотрите также: Соединение Charsets.

Кроме того, важно отметить, что Meta Equiv не имеет значения, вам нужно всегда Установите заголовок («Тип контента: ...)

Поскольку ваша страница HTML верна, кажется, что вы храните правильные данные в базе данных.

€ Является ли кодировка UTF-8 знака евро неправильно истолкована как Windows-1252. Похоже, что ваши инструменты Windows используют «ANSI», кодирующие вместо кодировки базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top