Форум: "Прочее";
Текущий архив: 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