Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с MySQL, вместо русского текста - ??????????? 
:(
    Опции темы
aktuba
Дата 26.3.2007, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Собственно, сабж. Вместо русского текста из базы выводится ???????. Как пофиксить?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 26.3.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



set names utf8 + кодировка в самой базе должна быть не ср1251, а utf8 + header('Content-Type: text/html; charset=UTF-8')(в рнр-коде ) + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> (в HTML - коде). впрочем, выглядит так, как будто ср1251 пытается отображаться, как utf8.
попробуй отправить заголовки(header и <meta>), будто у тебя ср1251. 
если текст буде выглядеть читабельно, значит, либо храниться не в той кодировке(тогда смотрим кодировку таблицы/поля), или выдергивается не в той кодировке(тогда проверяем наличие "set names utf8" перед первым запросом)

Это сообщение отредактировал(а) skyboy - 26.3.2007, 12:33
PM MAIL   Вверх
aktuba
Дата 26.3.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



skyboy, ничего не понял практически... Объясню по своему.
Во-первых, почему кодировка в самлй базе должна быть utf-8? У меня сайт на мастерхосте, а там Win-1251... Проблем при переносе не будет?
Во-вторых, весь русский текст из скриптов выводиться нормально. Проблемы только с текстом из базы...

Цитата

как будто ср1251 пытается отображаться, как utf8


И у меня такое же подозрение, только вот почему так?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 26.3.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Цитата(aktuba @  26.3.2007,  10:47 Найти цитируемый пост)
У меня сайт на мастерхосте, а там Win-1251... 

при "переносе"(бекап, трансфер и прочие операции) передаются также конструкции, создающие таблицу. а там явно указывается кодировка отдельно взятой таблицы - безразлично, какая кодировка будет по умолчанию, лишь бы ты её явно определял.
Цитата(aktuba @  26.3.2007,  10:47 Найти цитируемый пост)
Во-первых, почему кодировка в самлй базе должна быть utf-8?

потому что практичнее. и универсальнее ср1251. но, раз у тебя ср1251, подойдем к проблеме справа smile
Цитата(aktuba @  26.3.2007,  10:47 Найти цитируемый пост)
И у меня такое же подозрение, только вот почему так? 

вариантов много: у тебя участвуют три компонента(БД, скрипт на сервере и браузер), а также две связи между ними. потому вариантов - максимум 5. в зависимости от скриптового языка(я почему-то решил, что РНР; наверное, не прав - иначе тема была бы в РНР: Базы данных...), вариантов может быть 4 smile
итак:
  •  хранение в БД "не в той кодировке". точно там ср1251 в charset'e указано?
  •  вытягивания из БД не в той кодировке; надо перед самым первым твоим запросом к БД сделать "SET NAMES <твоя_кодировка>"; где твоя кодировка в данном случае - "ср1251"
  •  преобразование в другую кодировку в самом скрипте(мало ли; я же не знаю, какой язык ты используешь - вдруг, к примеру, в ASP само все к utf8 преобразуется  smile )
  •  передача браузеру: надо передать ему заголовок "Content-Type: text/html; charset=cp1251" и тег <meta http-equiv="content-type" content="text/html; charset=cp1251" />
  •  корявое отображение браузером(нет вариантов лечения)

PM MAIL   Вверх
aktuba
Дата 26.3.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Цитата

я почему-то решил, что РНР; наверное, не прав - иначе тема была бы в РНР: Базы данных...


Догадался правильно, просто я не знаю, куда правильнее было задать вопрос...

Цитата

хранение в БД "не в той кодировке". точно там ср1251 в charset'e указано?


Да, точно cp1251...

Цитата

вытягивания из БД не в той кодировке; надо перед самым первым твоим запросом к БД сделать "SET NAMES <твоя_кодировка>"; где твоя кодировка в данном случае - "ср1251"


вот этот пункт можно подробнее? что, как, зачем???

Цитата

преобразование в другую кодировку в самом скрипте(мало ли; я же не знаю, какой язык ты используешь - вдруг, к примеру, в ASP само все к utf8 преобразуется  smile )


нет такого...

Цитата

передача браузеру: надо передать ему заголовок "Content-Type: text/html; charset=cp1251" и тег <meta http-equiv="content-type" content="text/html; charset=cp1251" />


есть такое

Цитата

корявое отображение браузером(нет вариантов лечения)


нет такого...

Итого: что такое Set Names, как применять и для чего это вообще...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 26.3.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Цитата(aktuba @  26.3.2007,  11:46 Найти цитируемый пост)
Итого: что такое Set Names, как применять и для чего это вообще... 

для установки кодировки "общения" сервера с клиентом:
Цитата(dev.mysql.com)

SET NAMES {'charset_name' [COLLATE 'collation_name'} | DEFAULT}

SET NAMES sets the three session system variables character_set_client, character_set_connection, and character_set_results to the given character set. Setting character_set_connection to charset_name also sets collation_connection to the default collation for charset_name. The optional COLLATE clause may be used to specify a collation explicitly. See Section 10.4, “Connection Character Sets and Collations”.

The default mapping can be restored by using a value of DEFAULT. The default depends on the server configuration.

Note that the syntax for SET NAMES differs from that for setting most other options.


в твоей варианте, видимо, необходимо сделать "set names cp1251"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.