Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Paranoik
Member

Откуда:
Сообщений: 170
Темы про кодировку тут появляюся почти раз в неделю. Но тем не менее, пройдя поиском и прочитав сообщения, не смог решить свою проблему.
Есть:
mysql 4.1.10a-nt, PHP 5.0.3, Apache 2.0.53, WinXP Prof RUS
Интранет сайт; клиент на Delphi6 через компонент Zeos для работы с MySQL. Всё работает с одной и той же бд.

Создал таблицы в базе с помомщью MySQL QUERY. Команда show create table ... по любой из них выдаёт 'cp1251'. Выполнив в MySQL QUERY запрос show variables получаю следующее:
character_set_client = utf8
character_set_connection = utf8
character_set_database = cp1251
character_set_results = utf8
character_set_server = cp1251
character_set_system = utf8
collation_connection = utf8_general_ci
collation_database = cp1251_general_ci
collation_server = cp1251_general_ci

PHP, общаясь с MySQL, русские символы отображает как "???????".
Каждый раз при соединении, выполняя SET NAMES cp1251, решил проблему. В Дельфи аналогично выдавались "?????". Так же выполняя предварительно SET NAMES cp1251 решил проблему. Но бывает клиент теряет соединение и делает реконект, после чего снова "?????". Наверняка решится и эта проблема, выполняя в нужном месте очередной SET NAMES cp1251, но надоело уже.

Неужели нельзя устроить всё так, чтобы не приходилось выполнять SET NAMES cp1251?
Пробовал пересоздать базу в utf8 - аналогично без SET NAMES cp1251 не работает.
Подозреваю, что переменные MySQL, находятся не в должном состоянии и может быть меня спасёт их установление всех в cp1251... Пробовал установить эти переменные в my.ini, но ничего не получилось :( Либо я неправильно это делаю, либо вообще это в корне неправильно.

Ещё раз извиняюсь за очередную тему про русские кодировки, но заранее благодарен за совет или отсыл к источнику, где бы я смог найти ответ.
Спасибо!
11 апр 05, 21:01    [1458798]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении  [new]
Хрен
Member

Откуда: Brisbane
Сообщений: 1455
отсыл к источнику обратите внимание на параграф, который начинается с

With the mysql client, it is not necessary to execute SET NAMES every time you start up
11 апр 05, 21:11    [1458809]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Paranoik
Member

Откуда:
Сообщений: 170
Спасибо! Читаю.
11 апр 05, 21:26    [1458826]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Paranoik
Member

Откуда:
Сообщений: 170
Нет. Неработает. Уже пробовал.
Добавлял в файл my.ini строки:
[mysql]
default-character-set=cp1251

Пробовал в параметрах запуска службы указывать --default-character-set=cp1251
Не помогло.
11 апр 05, 21:39    [1458836]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Paranoik
Member

Откуда:
Сообщений: 170
Уточнил тут, скрипт на PHP, посылая show variables (отрубив set names cp1251), выдаёт всё же следующее:
character_set_client = latin1
character_set_connection = latin1
character_set_database = cp1251
character_set_results = latin1
character_set_server = cp1251
character_set_system = utf8
collation_connection = latin1_swedish_ci
collation_database = cp1251_general_ci
collation_server = cp1251_general_ci
11 апр 05, 21:52    [1458852]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении  [new]
Хрен
Member

Откуда: Brisbane
Сообщений: 1455
ну тогда тебе верхний комментарий прочитать отсюда. Про init-connect
11 апр 05, 22:26    [1458882]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Paranoik
Member

Откуда:
Сообщений: 170
А вот за это большое спасибо!
Помогло.

Может ещё кому понадобится:
В my.ini в секции [mysqld] пишется строка:
init-connect='SET NAMES cp1251'
и кодировка будет устанавливаться при каждом соединении автоматом.
12 апр 05, 15:37    [1461519]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении  [new]
Mike M.
Member

Откуда:
Сообщений: 12
Только в документации на MySQL 5.1 упоминается параметр init_connect и строчка в my.ini будет выглядеть как:
[mysqld]
init_connect='SET NAMES cp1251'
6 янв 06, 18:27    [2233136]     Ответить | Цитировать Сообщить модератору
 задание параметров в my.cnf  [new]
Dinky
Member

Откуда: GTA, ON, CA
Сообщений: 716
afaik, начиная с 4-й версии должны работать все три варианта:

set-variable = init_connect=""
init-connect = ""
init_connect = ""

В 5.0.18 - работает :-P
--
Dmitry
6 янв 06, 21:01    [2233361]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении  [new]
Хрен
Member

Откуда: Brisbane
Сообщений: 1455
На этом фронте появилось кое-что новое:

Из changelog для 4.1.15, но мержнуто в 5 тоже (примерно октябрь 2005):

A new command line argument was added to mysqld to ignore client character set information sent during handshake, and use server side settings instead, to reproduce 4.0 behavior:

mysqld --skip-character-set-client-handshake
7 янв 06, 00:10    [2233719]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Etwas
Member

Откуда:
Сообщений: 3
у меня на Fedore стоит mysql 4.1.11 , до этого была база на 3 mysql и на OS/2. Сейчас, при переносе сайтов, столкнулся как раз с такой же проблемой. При импорте таблиц, в phpMyAdmin'e данные видно нормально, на русском языке, но на сайтах, они вопросами. В my.cnf поменял все что можно

[mysqld]
datadir=...
socket=...
old_passwords=1
default-character-set=cp1251
init-connect='SET NAMES cp1251'

[mysql.server]
user=mysql
basedir=...
default-character-set=cp1251

[mysqld_safe]
err-log=...
pid-file=...
default-character-set=cp1251

[client]
default-character-set=cp1251

запрос show variables выдает:
character_set_client = cp1251
character_set_connection = cp1251
character_set_database = cp1251
character_set_results = cp1251
character_set_server = cp1251
character_set_system = utf8
collation_connection = cp1251
collation_database = cp1251_general_ci
collation_server = cp1251_general_ci

пересмотрел кучу литературы, перепробывал много способов, не получается исправить...
Если в my.cnf поменять cp1251 на latin1, убить базу, и заново залить, то на сайтах выводятся данные нормально, кирилицей, но в phpMyAdmin'e - вопросами. Плюс сортировка тогда не работает. Может кто сталкивался с таким?
20 янв 06, 14:40    [2273497]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
4m@t!c
Member

Откуда: //Украина/Киев (иногда Запорожье)
Сообщений: 2677
поиск по форуму никто не отменял. Раз в 2 дня такой вопрос на форуме.
----------------------------------------
Артисты не приехали, приехали цыгане
20 янв 06, 17:25    [2274338]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Etwas
Member

Откуда:
Сообщений: 3
В том-то и дело, что все советы, которые я находил на форуме, они не подходят. Все равно ничего не изменяется
20 янв 06, 18:55    [2274697]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
4m@t!c
Member

Откуда: //Украина/Киев (иногда Запорожье)
Сообщений: 2677
Список урлов, которые вы прочли?
----------------------------------------
Артисты не приехали, приехали цыгане
20 янв 06, 18:59    [2274706]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Etwas
Member

Откуда:
Сообщений: 3
http://phpclub.ru/talk/showthread.php?s=420a006b73110f7b9cd65414ee6ca0ce&threadid=58477&highlight=%CA%EE%E4%E8%F0%EE%E2%EA%E0+MySql

http://phpclub.ru/faq/wakka.php?wakka=Mysql41Rus

И все в том же духе. Я сам ненавижу "глупые" вопросы, которые повторяются. Но, если посмотреть ту конфигурацию сервера, которую я привел, по-моему вопрос о поиске урлов исключается. Их я смотрел и внимательно читал.

p.s. Только сейчас дошло, может в сайтах проблема? Жаль до понедельника не проверю...
20 янв 06, 22:41    [2275050]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
Nick777
Guest
Проблемы с кирилицей Cyrillic Character Sets (cp1251) при работе с mysql 4.1.18 (выводит такое ???????????).
Я нашел как решить проблему. Это посылка дополнительного запроса к mysql

function mysql_connection ()
{
Global $host,$user,$pass;

if(!$dbc=@mysql_connect("$host","$user","$pass")){

mysql_query("SET NAMES cp1251");

return $dbc;
}


Но иногда это не срабатывает(возможно из-за потери соединения или большого количества запросов к базе). Мой хостинг имеет _ENV["LANG"] en_US.UTF-8, mysql 4.1.18, PHP4.
1) Можно ли как-то работать с Cyrillic Character Sets (cp1251) без посылки дополнительного запроса?
2) Можно ли настроить конфигурацию mysql для работы с cp1251 через .htaccess так как я не имею доступа к php.ini и my.ini на хостинге?
5 апр 06, 14:05    [2526807]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении  [new]
просто Я
Guest
Nick777
Проблемы с кирилицей Cyrillic Character Sets (cp1251) при работе с mysql 4.1.18 (выводит такое ???????????).
Я нашел как решить проблему. Это посылка дополнительного запроса к mysql

function mysql_connection ()
{
Global $host,$user,$pass;

if(!$dbc=@mysql_connect("$host","$user","$pass")){

mysql_query("SET NAMES cp1251");

return $dbc;
}



2) Можно ли настроить конфигурацию mysql для работы с cp1251 через .htaccess так как я не имею доступа к php.ini и my.ini на хостинге?



Пассиб огромное!!!
19 май 06, 16:09    [2685228]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
LanTHrusteR
Guest
Вместо
[mysql.server]

надо писать
[server]

в доке именно [server] написано, поэтому у тебя и не работало.
24 май 06, 18:28    [2702391]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
LanTHrusteR
Guest
[server]
skip-character-set-client-handshake
init-connect='set NAMES cp1251'


и заработает
24 май 06, 18:31    [2702402]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
LanTHrusteR
Guest
Или ты забыл

skip-character-set-client-handshake
24 май 06, 18:33    [2702411]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
ibcon
Member

Откуда: Санкт-Петербург
Сообщений: 11
У меня такая же проблема. Не знаю пока как решить. Может кто знает?
Есть база данных в которой все таблицы имеют кодировку ср1251.
При выполнении запроса show variables получаю:
character_set_client = utf8
character_set_connection = cp1251
character_set_database = cp1251
character_set_results = utf8
character_set_server = latin1
character_set_system = utf8
collation_connection = cp1251_general_ci
collation_database = cp1251_general_ci
collation_server = latin_swedish_ci

Теперь когда я в Акцессе выполняю "Внешние данные -> Связь с таблицами" через настроенный ODBC-источник мне в итоговых таблицах выдается или "??????????" или еще какая-то ерунда.
Пробовал прописать set names cp1251 - не помогает.
24 май 06, 18:45    [2702461]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
lissyara
Member

Откуда: Made in USSR
Сообщений: 5945

кстати тема - у меня на паре машин собран с такой кодировкой сам сервер и
клиент - так на другие перенести не могу - вопросы кажут....


Posted via ActualForum NNTP Server 1.3

24 май 06, 21:24    [2702931]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
pcb
Member

Откуда:
Сообщений: 1
Аналогичная как и у многих ситуация.

version 4.1.8-max

character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
collation_connection cp1251_general_ci
collation_database cp1251_general_ci
collation_server cp1251_general_ci

ACCESS выполняю "Внешние данные -> Связь с таблицами" через настроенный ODBC-источник(mysql-connector-odbc-3.51.12-win32), таблицах выдается "??????????"
MySQL Control Center 0.9.4 таблицах выдается "??????????"
MySQL Administrator 1.1.9 все по русски.

В чем может быть проблема?
14 июл 06, 23:24    [2884444]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении  [new]
bac
Member

Откуда: Пенза
Сообщений: 449
В ODBC есть закладка Connect Options, там в поле Initial Statement
ввести set names 'cp1251'
20 июл 06, 21:06    [2907368]     Ответить | Цитировать Сообщить модератору
 Re: Неудобно уже спрашивать, но осточертело использовать 'SET NAMES cp1251' при соединении.  [new]
hristoff
Member

Откуда:
Сообщений: 20
У меня на хостинге:

character_set_client utf8
character_set_connection cp1251
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection cp1251_bin
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci


А на моём компе:

character_set latin1
character_sets latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis...


При переносе с моего на хостинг через пхпадмин все русские символы отображаються вопросика что делать ??????
28 июл 06, 13:45    [2938359]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / MySQL Ответить