кодировка в MySQL

Вопросы программирования и использования среды Lazarus.

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

кодировка в MySQL

Сообщение alu » 29.05.2007 11:34:05

Люди подскажите, устал уже гадать какая кодирвка нужна чтоб русские буквы были русскими, а не знаками вопроса..
сервер MySQL на Linux с локалью cp1251, кодировка базы данных-utf8. Пишу приложение для Виндов...
из консоли линукса делаю выборку, и если перед этим я напишу
SET character_set_client="cp1251",character_set_connection="cp1251",character_set_results="cp1251";
то все буквы русские в консоли нормально отображаются, если это же делаю в приложении то не видно ничего (вопросы одни с цифрами).
сервер версии 4.1 вывожу в TDBGrid,
пробовал

SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";

и

SET character_set_client="koi8r",character_set_connection="koi8r",character_set_results="koi8r";

поле CharSet в ТMySQL41Connection ни как не влияет на отображение почему-то
Аватара пользователя
alu
новенький
 
Сообщения: 33
Зарегистрирован: 15.01.2007 12:54:14
Откуда: Саратов

Сообщение Lisolog » 14.12.2007 15:08:49

Ситуация имхо аналогичная, только известно, что прога (Linux) в koi8-r база mysql в cp1251
Всё замечательно подключается, данные видятся, перекодировка требуется.
Как бы Tmysql50connection -у сказать что у нево чарсет был бы cp1251.. или наоборот... :?:
Всяческие SET NAMES не помогають..
2alu: получилось чонть?
Lisolog
новенький
 
Сообщения: 39
Зарегистрирован: 13.12.2007 14:24:08
Откуда: Russia, SPb

Сообщение shade » 14.12.2007 19:29:19

Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Lisolog » 17.12.2007 20:43:31


это я уже курил +)
Проблема в том, что у меня есть клиенты на винде, поэтому база сделана с кодировкой cp1251, а вот как с такой кодировкой в базе работать из написанного приложения на эхотаге, где основная кодировка koi8r?
т.е. я во всяком случае не заинтересован конвертировать данные..
Из данной проблемы есть как я вижу два выхода:
1 - научить иксы дефолтовой локали cp1251
2 - каким то образом добиться чтобы параметр Tmysql50connection.charset каким то образом все таки начал работать.
Lisolog
новенький
 
Сообщения: 39
Зарегистрирован: 13.12.2007 14:24:08
Откуда: Russia, SPb

Сообщение shade » 17.12.2007 23:23:02

Lisolog писал(а):1 - научить иксы дефолтовой локали cp1251

В отдельно взятом случае (если только для себя), то в принципе можно...

Lisolog писал(а):Всяческие SET NAMES не помогають..

Если ничего не путаю, то SET NAMES одноверменно уставливает character_set_client, character_set_connection и character_set_results.

Попробуй устанавливать их отдельно
http://www.habrahabr.ru/blog/mysql/17731.html писал(а):Любой mysql-клиент при соединении с сервером может установить несколько переменных:
* character_set_client - указывает, в какой кодировке будут поступать данные от клиента;
* character_set_connection - указывает, в какую кодировку следует преобразовать данные полученые от клиента перед выполнением запроса;
* collation_connection - указывает, каким образом сравнивать между собой строки в запросах;
* character_set_results - указывает серверу не необходимость перекодировать результаты запроса в определенную кодировку перед выдачей их клиенту.


Например, попробуйте в линухе сделать так
SET character_set_client="koi8r", character_set_connection="cp1251", character_set_results="koi8r";

А в винде SET NAMES cp1251
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Lisolog » 18.12.2007 00:59:19

shade писал(а):
Lisolog писал(а):1 - научить иксы дефолтовой локали cp1251

В отдельно взятом случае (если только для себя), то в принципе можно...

Считаю это надругательством над Линухом, впендюривать виндовую локаль, хотя желание было +)

Например, попробуйте в линухе сделать так
SET character_set_client="koi8r", character_set_connection="cp1251", character_set_results="koi8r";

А в винде SET NAMES cp1251

Пасиба, попробую воткнуть.
Один вопрос:
это делается один раз при запуске или перед каждым запросом?
ну или там в начале сеанса с сервером, до тех пор пока таймаут не выйдет...
Просто когда я некоторое время назад пытался запускать какойто аналогичный запрос (когда на винде в дельфях подключался к серваку с кодировкой Latin1) то чтото жутко и грязно выругивалось..
Ну в общем завтра пробую и отписываюсь что получилось.
Lisolog
новенький
 
Сообщения: 39
Зарегистрирован: 13.12.2007 14:24:08
Откуда: Russia, SPb

Сообщение Lisolog » 18.12.2007 12:29:20

shade писал(а):SET character_set_client="koi8r", character_set_connection="cp1251", character_set_results="koi8r";

А в винде SET NAMES cp1251

Спасибо, всё действительно работает.
Lisolog
новенький
 
Сообщения: 39
Зарегистрирован: 13.12.2007 14:24:08
Откуда: Russia, SPb

Сообщение shade » 18.12.2007 20:51:48

Lisolog писал(а):Один вопрос:
это делается один раз при запуске или перед каждым запросом?
ну или там в начале сеанса с сервером, до тех пор пока таймаут не выйдет...

Один раз после подключения. Но могут быть нюансы, если используется автоматическое переподключение при разрывае соедиения, в доках вроде было написано, что переменные в таком случае сбрасываются... По-умолчанию, как я понимаю, автоматическое переподключение не используется или это относиться только к утилите mysql... в общем точно не скажу :roll:
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: кодировка в MySQL

Сообщение victorgugo » 04.03.2009 03:44:55

кто знает? спасайте! подключенная БД к лазарусовскому приложению! русский текст отбражается знаками вопросов! при попытке написать в гриде что-то по русски возникает исключительная ситуация!
заранее спасибо!
victorgugo
новенький
 
Сообщения: 17
Зарегистрирован: 04.03.2009 03:11:20

Re: кодировка в MySQL

Сообщение Lisolog » 04.03.2009 11:13:13

victorgugo писал(а):кто знает? спасайте! подключенная БД к лазарусовскому приложению! русский текст отбражается знаками вопросов! при попытке написать в гриде что-то по русски возникает исключительная ситуация!
заранее спасибо!

В какой кодировке база и в какой кодировке проект?
если проект в UTF-8 а база в 1251 например делай так:
Код: Выделить всё
....sql.add('SET character_set_client="utf8", character_set_connection="cp1251",character_set_results="utf8";');

Если иначе - смотри по аналогии
Lisolog
новенький
 
Сообщения: 39
Зарегистрирован: 13.12.2007 14:24:08
Откуда: Russia, SPb

Re: кодировка в MySQL

Сообщение victorgugo » 04.03.2009 19:41:58

Lisolog писал(а):В какой кодировке база и в какой кодировке проект?если проект в UTF-8 а база в 1251 например делай так:Код: Выделить всё....sql.add('SET character_set_client="utf8", character_set_connection="cp1251",character_set_results="utf8";');


Да! проект в UTF, а база в 1251! sql.add - это метод для Query?
victorgugo
новенький
 
Сообщения: 17
Зарегистрирован: 04.03.2009 03:11:20

Re: кодировка в MySQL

Сообщение Mr.Smart » 04.03.2009 21:57:45

victorgugo писал(а):
Lisolog писал(а):В какой кодировке база и в какой кодировке проект?если проект в UTF-8 а база в 1251 например делай так:Код: Выделить всё....sql.add('SET character_set_client="utf8", character_set_connection="cp1251",character_set_results="utf8";');


Да! проект в UTF, а база в 1251! sql.add - это метод для Query?

угу
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: кодировка в MySQL

Сообщение victorgugo » 04.03.2009 23:25:09

Спасибо громадное! все получилось!
victorgugo
новенький
 
Сообщения: 17
Зарегистрирован: 04.03.2009 03:11:20

Re: кодировка в MySQL

Сообщение Pirr » 30.10.2009 12:23:10

Помогите тоже разобраться с кодировками.
Сделал небольшой проект в Lazarus под Windows для MySQL 5.0, но с чтением русских букв проблемы.
База данных вроде в latin1 - по крайней мере при её создании я ничего не менял, всё по дефолту.
В проекте имеется такая строчка (взята из какого то примера):
Код: Выделить всё
SQLQuery1.sql.add('SET character_set_client='+#39+'utf8'+#39+', character_set_connection='+#39+'cp1251'+#39+',character_set_results='+#39+'utf8'+#39+';');

Значения кодировок пробовал тосовать по разному, но ничего путнего не получается, либо вместо русских букв знаки вопросов, либо абра-кадабра.
Аватара пользователя
Pirr
новенький
 
Сообщения: 21
Зарегистрирован: 21.10.2009 11:50:46

Re: кодировка в MySQL

Сообщение GAMER » 30.10.2009 15:32:51

Попробуй отправить запрос
Код: Выделить всё
set names utf8
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

Рейтинг@Mail.ru