Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

Кодировка: PHP MySQL   Найти похожие ветки 

 
homm ©   (2007-04-18 09:34) [0]

Сразу попрошу не ругатся всякими RTFM и STFW :)
Нужно что-бы сервер и скрипты общались в кодировке ср1251. В конфигах сикьюэля прописано «default-character-set=cp1251», как надо. И по умолчанию действительно коннектится в нужной кодировке. Но проблема в том что PHP при коннекте где-то сам меняет кодировку. Т.е. запрос «SHOW VARIABLES LIKE "character_set_client"» сразу после коннект выдает кодировку latin1. Выхода я нашел два, но они оба меня не устраивают:

1) Делать запрос «SET NAMES cp1251» Каждый раз при коннекте
Каждый скрипт править не будешь же. К тому-же там цмска, правка исходного кода которой вроде как запрещена лицензией.

2) Прописать в конфигах «skip-character-set-client-handshake» и тогда сикьюэль забивает на требования клиента сменить кодировку.
Но вдруг все-же найдутся скрипты, для которых смена клиентской кодировки принципиальна.

Скорее всего нужно где-то в конфигах PHP прописать (или вообще убрать, пусть будет по умолчанию, верная) кодировку, в которой он пытается подключится. В денвере нет таких проблем, я пытался искать в нем по всем конфигам, где может быть это дело прописано, ничего не нашел.


 
Александр Иванов ©   (2007-04-18 09:45) [1]

По-моему, все настоятельно советуют именно 1.


 
PEAKTOP ©   (2007-04-18 09:57) [2]

php.ini в каталоге /etc или в каталоге c:\windows\

параметр
default_charset = "windows-1251"


 
homm ©   (2007-04-18 10:10) [3]


> параметр
> default_charset = "windows-1251"

Спасибо, но увы, не помогло. Видимо к базам данных эта строка не имеет отношения.


 
McSimm_ ©   (2007-04-18 10:16) [4]

Может сама cms делает set names ?


 
homm ©   (2007-04-18 10:18) [5]

> Может сама cms делает set names ?

Нет, я же на тестовом примере делаю запрос «SHOW VARIABLES LIKE "character_set_client"». Он показывает ср1251 только с включеной опцией «skip-character-set-client-handshake».


 
McSimm_ ©   (2007-04-18 10:27) [6]


> на тестовом примере

Коннект для тестового примера делает cms ?


 
McSimm_ ©   (2007-04-18 10:28) [7]


> запрос «SHOW VARIABLES LIKE "character_set_client"» сразу
> после коннект выдает кодировку latin1



> делаю запрос «SHOW VARIABLES LIKE "character_set_client"».
>  Он показывает ср1251


 
homm ©   (2007-04-18 10:42) [8]

> [7] McSimm_ ©   (18.04.07 10:28)
> > делаю запрос «SHOW VARIABLES LIKE "character_set_client"».
> >  Он показывает ср1251

Ну а дальше читать? :)


> Коннект для тестового примера делает cms ?

Конечно нет.
<?php
mysql_connect("localhost", "root", "");
$r = mysql_query("SHOW VARIABLES LIKE "character_set_client"");
var_dump(mysql_fetch_array($r));
?>


 
Алхимик ©   (2007-04-18 11:14) [9]


> 1) Делать запрос «SET NAMES cp1251» Каждый раз при коннекте
>
> Каждый скрипт править не будешь же.

Попробуй:
http://php-myadmin.ru/learning/mysql-cir.html
1) Оставить запрос "SET NAMES кодировка" в начале скрипта. Если скриптов много – см. вариант 2.
2) Заставить MySQL автоматически выполнять этот запрос при каждом соединении с ним.
Для этого необходимо в конфигурационном файле MySQL, в секции [mysqld] добавить следующую строку: init-connect="SET NAMES кодировка".


 
homm ©   (2007-04-18 11:16) [10]

> [9] Алхимик ©   (18.04.07 11:14)

Это я тоже читал. :) Не кошерно. Проблема то проще, где у PHP кодировка указывается с котрой он коннектится к MySQL по умолчанию. Все оставльное — костыли.


 
Алхимик ©   (2007-04-18 11:44) [11]

> [10] homm ©   (18.04.07 11:16)

А что говорят на форуме по твоей "секретной" CMS? :)


 
homm ©   (2007-04-18 11:49) [12]

:) Во первых не CMS не секретная (NetCat), во вторых она совершенно непричем, не понятно почему на ее форуме должны что-то говорить по этому поводу.


 
Алхимик ©   (2007-04-18 12:05) [13]

Версии php и My SQL какие?
У меня
php - 5.1.4
MySQL - 5.0
Для решения проблем с кодировками использую только SET NAMES cp1251, конфиги не правил.


 
McSimm_ ©   (2007-04-18 12:10) [14]


> > Коннект для тестового примера делает cms ?
> Конечно нет.


тогда почему нет:

> Может сама cms делает set names ?



> где у PHP кодировка указывается с котрой он коннектится
> к MySQL по умолчанию

нет такой настройки.


 
homm ©   (2007-04-18 12:23) [15]

> нет такой настройки.

А ведб правда, похоже не в PHP дело. Подключился через mysql.exe, сделал «SHOW VARIABLES LIKE "character_set_client"» и получил ltin1 ! Вообще не понимаю тогда логики. ВЕЗЕДЕ ГДЕ МОЖНО указал для mysql что работать по ср1251, а она все равно в кодировки по умалчанию коннектится :( Ладно, буду юзать «skip-character-set-client-handshake»...


 
McSimm_ ©   (2007-04-18 12:30) [16]


> В конфигах сикьюэля прописано «default-character-set=cp1251»

Может не в той секции ?
Может демон рестартовать надо после изменения?


 
homm ©   (2007-04-18 12:33) [17]

> Может не в той секции ?

В секциях client и mysqld.


> Может демон рестартовать надо после изменения?

Надо. Рестартовал естестввено :)


 
McSimm_ ©   (2007-04-18 12:41) [18]

[mysql]
default-character-set=cp1251


 
Real ©   (2007-04-22 02:53) [19]


> 1) Делать запрос «SET NAMES cp1251» Каждый раз при коннекте
> Каждый скрипт править не будешь же. К тому-же там цмска,
>  правка исходного кода которой вроде как запрещена лицензией.

А зачем каждый скрипт? У тебя как подключается скрипт к БД? Наверняка через один файл или функцию, в которой вызывается mysql_connect вот в него и добавь выполнение этого запроса. Насколько я знаю - все именно так и делают. Думаю за такую правку конфиг-модуля никто на тебя в суд не подаст :) К тому же, если кто-то увидит содержимое твоего файл с вызовом mysql_connect - то вероятно уже скоро БД будет снесена :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.063 c
15-1176436333
MBo
2007-04-13 07:52
2007.05.20
Пятничные задачки. Вася Пупкин returns...


15-1176839093
Kostafey
2007-04-17 23:44
2007.05.20
Раздел "Базы" что-то с обеда не работает...


2-1177413253
Aibolit
2007-04-24 15:14
2007.05.20
как сделать таймер в создаваемом сервисе


15-1177342559
фонк
2007-04-23 19:35
2007.05.20
А можно ли тут найти все ветки, созданные одним автором?


15-1177344906
vasIZmax
2007-04-23 20:15
2007.05.20
Паттерны проектирования





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский