sql и кодировка

G
На сайте с 13.11.2002
Offline
104
901

Перенес сайты на другой сервер (скрипты + бд) простым копированием.

Тексты на русском, которые в php файлах, отображаются на сайтах корректно, а тексты которые берутся с базы отображаются так "????? ?? ??????? ??? ?????".

phpMyAdmin отображает кириллицу как надо.

В чем может быть проблема?

V
На сайте с 25.07.2006
Offline
128
#1
gratis:
Перенес сайты на другой сервер (скрипты + бд) простым копированием.
Тексты на русском, которые в php файлах, отображаются на сайтах корректно, а тексты которые берутся с базы отображаются так "????? ?? ??????? ??? ?????".
phpMyAdmin отображает кириллицу как надо.
В чем может быть проблема?

Нужно согласовать кодировки в которой данные хранятся в базе и отображаются на сайте.

Попробуйте в скриптах сразу после mysql_connect(......); прописать

mysql_query("set names cp1251");

Если страницы сайта не в cp1251, то вместо нее используйте соответствующую кодировку.

Приватный linux-администратор
G
На сайте с 13.11.2002
Offline
104
#2

Огромное спасибо, помогло.

Но почему так получилось?

V
На сайте с 25.07.2006
Offline
128
#3

Чаще всего такое происходит при апгрейде с mysql 4 на mysql 5 - старый мускул не поддерживал конвертацию кодировки данных "на лету".

Если на исходном сервере стояла таки 5-я версия, то вполне возможно, что использование чарсетов там было отключено либо в my.cnf было типа init-connect="SET NAMES cp1251".

А может и другие причины были...

G
На сайте с 13.11.2002
Offline
104
#4

Спасибо, действительно был 4 mysql, а на новом сервере уже 5-й.

Bazis007
На сайте с 10.06.2008
Offline
84
#5

На самом деле не только поэтому, даже при заливки дампа с одного сервака на другой такое происходит.

Подобную строчку mysql_query("set names utf-8"); (Я работаю в UTF-8) дописываю во все скрипты.

Этот же параметр может быть указан в my.cnf или my.ini сервера. (см. переменные)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий