Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Проблема ??? вместо русских букв (Dane) 04/08/2005 - 10:47:27
      Re: Проблема ??? вместо русских букв (Dubets) 04/08/2005 - 13:17:33
      Re: Проблема ??? вместо русских букв (Dane) 04/08/2005 - 13:34:45
      Re: Незачот, тема давно раскрыта. (Валентин) 04/08/2005 - 14:26:41
      Re: Незачот, тема давно раскрыта. (vn) 04/08/2005 - 14:58:59
      Re: По версии и чарсеты. Крео. (Валентин) 04/08/2005 - 16:28:44
      Re: По версии и чарсеты. Крео. (vn) 05/08/2005 - 09:00:57
      Re: Тема (Валентин) 05/08/2005 - 13:41:29
      Re: Проблема ??? вместо русских букв (макс) 11/02/2006 - 20:37:54

> Original message text:
> From: Dane - 04/08/2005 - 10:47:27
> Subject:Проблема ??? вместо русских букв
> -----------------
> Странная проблема.
> Установлено:
> 1. Apache 2.0.54
> 2. PHP 5.0.3
> 3. MySQL 4.1.12
> 6. PHPMyAdmin 2.6.3 pl1
> 5. Windows XP prof rus
>
> Собственно проблема:
> Завел новую БД, организовал таблицы.
> Заношу данные (в т.ч.на русском)
> Выполняется PHP скрипт, который подменяет в нужном месте шаблона страницы текст на тот, что занесен в БД.
> На экране, на месте подмененного блока, вместо русских букв - ?????
> Смотрю на текст в БД из PHPmyAdmin - все нормально...
> В чем грабля?
>


From: Валентин - 04/08/2005 - 16:28:44
Subject:По версии и чарсеты. Крео.
-----------------
Чарсет - набор кодов отображения символов для конкретного языка. Определяют буквы и их отображения.

В версиях MySQL 3.x, 4.0.x чарсет глобальный для всего сервера.
Он задается в my.ini (my.cnf -для юниксподобных).
default-character-set=cp1251
Объявлять чарсет в секции [mysqld] в конце, после других параметров.

В версиях 4.1.х, 5.0.х кодировки хранения и работы сервера были серьезно переработаны в юникод, значительно расширен синтаксис.
В этих версиях объявление чарсета в файле конфигурации my.ini
default-character-set=cp1251
бесполезно для соединения. Объявленный часрсет берется по дефолту для новых объектов БД (таблиц), столбцов и др.
Кроме этого кодировку по умолчанию можно задать для конкретной БД
ALTER DATABASE blabla character SET cp1251;
влияет опять же, как дефолтное значение при создании новых таблиц.

API - это компоненты, интерфейс, через который страница, программа коннектится к серверу БД. В API не всегда, но часто есть свойство/параметр, в котором можно указать чарсет соединения. Данный наворот может работать только с версиями 4.1.х, 5.0.х. В предыдущих версиях либо не будет влиять, либо вызовет ошибку, т.к. на низком уровне нет возможности задать этот параметр.
Например для ZeosDBO это строка в properties: CodePage=cp1251
Для разных компонентов/интерфейсов строка может по разному называться, в различные свойства добавлятся или выбираться из возможных значений. Для php - не скажу, потому что работал на php3, php4 с версиями 3, 4.0.х и не решал данную задачу.


Далее идет не сильно красивый, но самый универсальный метод:
задать чарсет для соединения.
Наиболее важный параметр - это
character_set_client
character_set_results - не тестировал, но и не задавал отличным от character_set_client, так что никаких конкретных рекомендаций нет.
Для того, чтобы не запаривать себе голову и помнить что на что влияет рекомендую задавать
set character set cp1251;
Фактически это будет первый запрос после установления коннекта.

Общие рекомендации:
1)Если не понятно, чем отличаются параметры сервера по чарсетам - советую проверить на тестовом примере, лучше 1 раз увидеть, чем 100 раз услышать.
2) Устанавливайте стабильные версии MySQL или минимум beta (например 5.0.10-beta).
3) Читайте документацию по тем компонентам, языкам в которых работаете.

Сервер не знает что вы от него хотите, пока вы сами не зададите ему нужные вам характеристики, он предоставляет возможноти, а их реализациями занимайтесь сами.

Вот собственно такой крео получится.
Если я в чем-то ошибся или не дописал - в каменты :)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
26474



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |