![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
vito1945 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.7.2008 Репутация: нет Всего: нет |
Установлены Apache, Php5, mysql5, myphpadmin. Итак расписываю свою конфигурацию.
------------------------------- my.ini: [client] port=3306 character-sets-dir=C:/Program Files/MySQL/MySQL Server 5.0/share/charsets/ default-character-set=cp1251 [mysql] #default-character-set=latin1 character-sets-dir=C:/Program Files/MySQL/MySQL Server 5.0/share/charsets/ default-character-set=cp1251 [mysqld] port=3306 basedir="C:/Program Files/MySQL/MySQL Server 5.0/" datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/" character-sets-dir=C:/Program Files/MySQL/MySQL Server 5.0/share/charsets/ default-character-set=cp1251 skip-character-set-client-handshake ....... ------------------------- После этого в phpmyadmin отображается информация MySQL-кодировка: UTF-8 Unicode (utf8) -- вот это я не понял почему. ------------------------- выполняю скрипт: >mysql source db.sql create database dbcredit; connect dbcredit; create table CRD_PERSON ( personID int(6) not null primary key auto_increment, fname VARCHAR(60) not null, pname VARCHAR(60) not null, lname VARCHAR(60) not null, bdate date not null, adress text not null, phone VARCHAR(11) not null, number char(4), serial char(6), pdate date, whogive text )ENGINE=InnoDB CHARACTER SET=cp1251; INSERT INTO CRD_PERSON VALUES (1,'Владимир', 'Владимирович', 'Путин', '1956-12-10', 'Москва, Кремль', '89202223322', '2908', '245876', '2005-12-23', 'ОВД Октябрьского округа'); INSERT INTO CRD_PERSON VALUES (2,'Дмитрий', 'Анатольевич', 'Медведев', '1964-11-10', 'Москва, Кремль', '89201111111', '2908', '245876', '2001-12-12', 'ОВД Октябрьского округа'); ---------------------------------------------- В phpmyadmin все данные по русски отображаются правильно. Если выполнить в mysql client: connect mydb; set names cp1251; select * from mytable. В результате кракозябры. Как исправить? (в принципе phpmyadmin отображает все но работаю со скриптами и mysql client) Это сообщение отредактировал(а) vito1945 - 20.8.2009, 13:49 |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 2 Всего: 37 |
что имеется в виду под словом mysql client? Если консольная mysql.exe, то проблема не в ней, а в кодировке консоли.
в виндоус, например, консоль по умолчанию имеет кодировку 866 и надо либо менять кодировку консоли, либо в Set names |
|||
|
||||
vito1945 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.7.2008 Репутация: нет Всего: нет |
Ипатьев, да именно консоль mysql client имел ввиду.
Менять кодировку консоли так? выполнить комманду "chcp 1251" (опять же без кавычек) и сменить шрифт консоли (Щелчок правой кнопкой на заголовок окна->Properties (Свойства), закладка Font (Шрифт)) на "Lucuda Console" и поставить галочку "Bold fonts" (Жирные шрифты). Нажать "OK". В появившемся окне диалога выбрать "Save properties for future windows with same title" (Сохранить свойства для будущих окон с тем же заголовком) и нажать "OK". А про set names я писал в конце прежнего поста. Или эту команду в другой момент выполнять? |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 2 Всего: 37 |
мне кажется, достаточно просто команды чцчп, без шаманства с установкой полужирного шрифта.
про set names я прочел в конце прежнего поста. только непонятно, при чем здесь она. вообще, странно. теоретически, данные не должны в пма отображаться правильно. ведь они ушли в базу из консоли с неправильной кодировкой. какая кодировка в пма выставлена, когда он показывает "правильно"? в любом случае, надо перед заливкой указывать кодировку, а потом уже экспериментировать |
|||
|
||||
vito1945 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.7.2008 Репутация: нет Всего: нет |
1. db.sql скрипт, который исполняется в команде >mysql source db.sql, написан в кодировке cp1251. Это имеет значение? Или имеет значение только кодировка консоли все равно? -какая кодировка в пма выставлена, когда он показывает "правильно"? если вы про это на главной странице пма: MySQL-кодировка: UTF-8 Unicode (utf8), то вот так. 2. когда нужно вставлять команду set names? и перед create table и insert into..? |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 2 Всего: 37 |
Ну разумеется, имеет. если мы меняем валюту, нам важно знать, какую мы меняем? или все равно? а вот кодировка консоли в этом случае значения не имеет Добавлено через 9 минут и 15 секунд грубо говоря, всякий раз, когда мы отправляем или получаем данные из базы, мы должны указать их кодировку. вот и все. |
|||
|
||||
vito1945 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.7.2008 Репутация: нет Всего: нет |
осталось 2 вопроса:
почему после проведенных изменений файла конфига субд, в пма выводится... MySQL-кодировка: UTF-8 Unicode (utf8)? когда нужно вставлять команду set names? и перед командой create table и перед insert into..? |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 2 Всего: 37 |
Во-первых, не стоит трогать конфиг СУБД. Он, собственно, ни на что вообще не влияет.
set names следует писать в каждом запросе по три раза. для надежности. |
|||
|
||||
vito1945 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.7.2008 Репутация: нет Всего: нет |
5 раз написал. все то же самое. консольный клиент выводит кракозябры.
еще есть мысли, почему так? (зы. конфиг субд я имел ввиду my.ini. Его редактировать обязательно для настройки кодировок) |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 2 Всего: 37 |
нет. my.ini редактировать для настройки кодировок не обязательно. и никакого эффекта редактирование не даст. вся работа с кодировками производится независимо от настроек.
мысль, "почему так" одна - что-то делается неправильно. хотя, казалось бы, система очень простая: когда загружаем данные, указываем для текущего сеанса кодировку, в которой эти данные пойдут. когда получаем данные, указываем для текущего сеанса кодировку, в какой мы их хотим получать. вот и все. если не работает, надо отлаживать. отдавать "кракозябры" (которые к сведению, не все на одно лицо, а легко классифицируются) автоматическому перекодировщику. проверять, в какой кодировке данные записались. не сидеть, в общем, сложа руки. Добавлено через 5 минут и 4 секунды опппа. так в конфиге понаписан skip-character-set-client-handshake тогда совсем другое дело |
|||
|
||||
vito1945 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.7.2008 Репутация: нет Всего: нет |
значит все-таки конфиг имеет значение. set names я так понимаю писать по 5 раз надобность вообще отпадает. Все прописано в my.ini. Но почему консоль выводит кракозяюры то? Вопрос открыт. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 2 Всего: 37 |
ну разумеется, имет. если цель правки конфига - сделать из современной версии БД устаревшую на 10 лет. такое талантливое решение мне в голову придти не могло.
почему вылезает, я написал в первом же ответе. рекомендую прочесть наконец. и перестать задавать этот вопрос в форуме по базам данных, а обратиться на форум начинающих пользователей виндоус Это сообщение отредактировал(а) Ипатьев - 21.8.2009, 14:06 |
|||
|
||||
СЭНСЭЙ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 20.3.2006 Репутация: нет Всего: нет |
они сюда отправят )
Добавлено через 2 минуты и 22 секунды а все таки вот уже конкретно сценарием пхп создал таблицу (по умолчанию кодировка latin1) и внес данные с русским шрифтом тем же пхп из базы выбирается русский текст, а mysql query browser и консоль выдают абракадабру а если сделать set names cp1251 то вопросики вот и информация к размышлению |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |