Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: sql и кодировка  (Прочитано 629 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bussya.pp.ru

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
sql и кодировка
« : 14 Октября 2010, 23:29:45 »
Перенес сайты на другой сервер (скрипты + бд) простым копированием.
Тексты на русском, которые в php файлах, отображаются на сайтах корректно, а тексты которые берутся с базы отображаются так "????? ?? ??????? ??? ?????".
phpMyAdmin отображает кириллицу как надо.
В чем может быть проблема?

Оффлайн proctoleha

  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: sql и кодировка
« Ответ #1 : 14 Октября 2010, 23:44:22 »
Послсе mysql_connect() прописать
mysql_query('SET NAMES utf8');
Если у вас utf8 конечно
За что я временами ненавижу Linux - так это за свои кривые руки

Оффлайн bussya.pp.ru

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: sql и кодировка
« Ответ #2 : 14 Октября 2010, 23:57:57 »
Если напротив базы в phpmyadmin мтоит "Сравнение cp1251_general_ci"
Что это значит?

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: sql и кодировка
« Ответ #3 : 15 Октября 2010, 00:08:24 »
а если самому подумать?

Оффлайн proctoleha

  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: sql и кодировка
« Ответ #4 : 15 Октября 2010, 00:09:42 »
Это значит, что вместо mysql_query('SET NAMES utf8');
можно попробовать mysql_query('SET NAMES windows1251');
А вообще кодировка windows1251 - зло (имхо)
За что я временами ненавижу Linux - так это за свои кривые руки

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28512
    • Просмотр профиля
Re: sql и кодировка
« Ответ #5 : 15 Октября 2010, 00:12:26 »
Это значит, что вместо mysql_query('SET NAMES utf8');
можно попробовать mysql_query('SET NAMES windows1251');
А вообще кодировка windows1251 - зло (имхо)

Бред. Кодировка базы не имеет никакого отношения к кодировке, в которой ты собираешься работать с данными.

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

Кодировка твоего обращения к базе не соответствует кодировке, в которой отдаются страницы.
Один из вариантов решения, как уже сказали, сделать после подключения SET NAMES кодировка

P.S.
cp1251 вообще-то. Даже если windows1251 сработает - это будет везением, не все сборки серверов поддерживают этот псевдоним.
« Последнее редактирование: 15 Октября 2010, 01:04:44 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн bussya.pp.ru

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: sql и кодировка
« Ответ #6 : 15 Октября 2010, 00:25:36 »
Огромное спасибо, помогло.
Но почему так получилось?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28512
    • Просмотр профиля
Re: sql и кодировка
« Ответ #7 : 15 Октября 2010, 01:03:51 »
Потому что кодировка, с которой сервер скомпилирован по умолчанию, обычно latin1. У твоего старого хостера могли поставить cp1251 "типа чтобы всем было удобнее" (не всем, но подробности опустим).
На будущее - переходи на MySQLi - там можно кодировку прямо при подключении указать.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.016 секунд. Запросов: 19.