Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка mysql client 
:(
    Опции темы
vito1945
Дата 20.8.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Ипатьев
Дата 20.8.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 2
Всего: 37



что имеется в виду под словом mysql client? Если консольная mysql.exe, то проблема не в ней, а в кодировке консоли.
в виндоус, например, консоль по умолчанию имеет кодировку 866
и надо либо менять кодировку консоли, либо в Set names
PM MAIL   Вверх
vito1945
Дата 20.8.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 я писал в конце прежнего поста. Или эту команду в другой момент выполнять?
PM MAIL   Вверх
Ипатьев
Дата 20.8.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 2
Всего: 37



мне кажется, достаточно просто команды чцчп, без шаманства с установкой полужирного шрифта. 
про set names я прочел в конце прежнего поста. только непонятно, при чем здесь она. 

вообще, странно. 
теоретически, данные не должны в пма отображаться правильно. ведь они ушли в базу из консоли с неправильной кодировкой.
какая кодировка в пма выставлена, когда он показывает "правильно"?

в любом случае, надо перед заливкой указывать кодировку, а потом уже экспериментировать

PM MAIL   Вверх
vito1945
Дата 20.8.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.7.2008

Репутация: нет
Всего: нет



Цитата(Ипатьев @ 20.8.2009,  14:34)
1.теоретически, данные не должны в пма отображаться правильно. ведь они ушли в базу из консоли с неправильной кодировкой.
какая кодировка в пма выставлена, когда он показывает "правильно"?

2.в любом случае, надо перед заливкой указывать кодировку, а потом уже экспериментировать

1. db.sql скрипт, который исполняется в команде >mysql source db.sql, написан в кодировке cp1251. Это имеет значение?
Или имеет значение только кодировка консоли все равно?

-какая кодировка в пма выставлена, когда он показывает "правильно"?
если вы про это на главной странице пма: MySQL-кодировка:  UTF-8 Unicode (utf8), то вот так.

2. когда нужно вставлять команду set names? и перед create table и insert into..?
PM MAIL   Вверх
Ипатьев
Дата 20.8.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 2
Всего: 37



Цитата(vito1945 @  20.8.2009,  15:03 Найти цитируемый пост)
Это имеет значение?

Ну разумеется, имеет.
если мы меняем валюту, нам важно знать, какую мы меняем? или все равно?
а вот кодировка консоли в этом случае значения не имеет

Добавлено через 9 минут и 15 секунд
грубо говоря, всякий раз, когда мы отправляем или получаем данные из базы, мы должны указать их кодировку. 
вот и все. 
PM MAIL   Вверх
vito1945
Дата 20.8.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.7.2008

Репутация: нет
Всего: нет



осталось 2 вопроса:
почему после проведенных изменений файла конфига субд, в пма выводится... MySQL-кодировка:  UTF-8 Unicode (utf8)?

когда нужно вставлять команду set names? и перед командой create table и перед insert into..? 
PM MAIL   Вверх
Ипатьев
Дата 20.8.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 2
Всего: 37



Во-первых, не стоит трогать конфиг СУБД. Он, собственно, ни на что вообще не влияет.
set names следует писать в каждом запросе по три раза. для надежности. 
PM MAIL   Вверх
vito1945
Дата 20.8.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.7.2008

Репутация: нет
Всего: нет



5 раз написал. все то же самое. консольный клиент выводит кракозябры.
еще есть мысли, почему так?
(зы. конфиг субд я имел ввиду my.ini. Его редактировать обязательно для настройки кодировок)
PM MAIL   Вверх
Ипатьев
Дата 20.8.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 2
Всего: 37



нет. my.ini редактировать для настройки кодировок не обязательно. и никакого эффекта редактирование не даст. вся работа с кодировками производится независимо от настроек.

мысль, "почему так" одна - что-то делается неправильно.
хотя, казалось бы, система очень простая: 
когда загружаем данные, указываем для текущего сеанса кодировку, в которой эти данные пойдут.
когда получаем данные, указываем для текущего сеанса кодировку, в какой мы их хотим получать.
вот и все.

если не работает, надо отлаживать. отдавать "кракозябры" (которые к сведению, не все на одно лицо, а легко классифицируются) автоматическому перекодировщику.
проверять, в какой кодировке данные записались. не сидеть, в общем, сложа руки.

Добавлено через 5 минут и 4 секунды
опппа.
так в конфиге понаписан skip-character-set-client-handshake
тогда совсем другое дело
PM MAIL   Вверх
vito1945
Дата 21.8.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 16.7.2008

Репутация: нет
Всего: нет



Цитата(Ипатьев @ 20.8.2009,  16:00)
опппа.
так в конфиге понаписан skip-character-set-client-handshake
тогда совсем другое дело

значит все-таки конфиг имеет значение. set names я так понимаю писать по 5 раз надобность вообще отпадает.
Все прописано в my.ini. Но почему консоль выводит кракозяюры то? Вопрос открыт.
PM MAIL   Вверх
Ипатьев
Дата 21.8.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 2
Всего: 37



ну разумеется, имет. если цель правки конфига - сделать из современной версии БД устаревшую на 10 лет. такое талантливое решение мне в голову придти не могло.
почему вылезает, я написал в первом же ответе. рекомендую прочесть наконец.
и перестать задавать этот вопрос в форуме по базам данных, а обратиться на форум начинающих пользователей виндоус

Это сообщение отредактировал(а) Ипатьев - 21.8.2009, 14:06
PM MAIL   Вверх
СЭНСЭЙ
Дата 27.1.2010, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



они сюда отправят )

Добавлено через 2 минуты и 22 секунды
а все таки
вот уже конкретно
сценарием пхп создал таблицу (по умолчанию кодировка latin1)
и внес данные с русским шрифтом
тем же пхп из базы выбирается русский текст,
а mysql query browser и консоль выдают абракадабру
а если сделать set names cp1251 то вопросики
вот и информация к размышлению
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.