Проблемы кодификации (и основы) с MySQL - PullRequest
3 голосов
/ 27 февраля 2012

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

В этом случае я веду себя как хостер. У нас есть страница PHP, работающая против MySQL. Кто-то сделал какую-то операцию над экземпляром MySQL, что вызвало проблемы с визуализацией проблемных символов (-, акцентов и т. Д.) (И это все, это загадка).

Я опробовал много вариантов, но я думаю, что мое отсутствие знаний делает меня слепым. Я знаю, что это обычное дело, поэтому, возможно, мы сможем создать какой-то «контрольный список».

Если я наберу 'status' на экземпляре MySQL, я получу:

Server version:         5.5.15 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306

Все в UTF8 ... отлично !. Если я соединяюсь с HeidiSQL и проверяю переменные, я получаю:

character_set_client     utf8
character_set_connection utf8
character_set_database   utf8
collation_collection     utf8_general_ci
collation_database       utf8_general_ci

И т. Д. И т. Д. Однако, к сожалению, посещение страницы возвращает странные символы как . Кодировка содержимого в тегах META также имеет формат UTF-8.

Я знаю, что некоторые изменения могут быть сделаны в коде, чтобы заставить соединение происходить в некоторой кодировке. Но, кроме этого, самое невероятное, что страница работала.

Кто-нибудь знает, что изменилось на сервере, чтобы вызвать такое поведение?

Большое спасибо как всегда!

PS: Нас особенно интересуют аспекты, связанные с конфигурациями серверов. Мы не хотим изменять исходный код клиента.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Если ваш код вводит данные в MySQL без установки кодировки в UTF, это, вероятно, приведет к вашим проблемам:

После подключения к БД и таблице БД запустите:

mysql_set_charset ( 'utf-8' );

Кодировка связи по умолчанию между PHP и MySQL все еще не UTF-8.

2 голосов
/ 27 февраля 2012

А как насчет HTTP-заголовка?Если в заголовке есть определение кодировки символов, то мета-определение не будет применено.

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