Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2016, 22:04   #1
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию Непонятки с кодировками

База данных MySql у базы Character set: cp1251--Windows Cyrilic, Collation: cp1251_general_ci.
В SQL Connection св-во Driver-ServerCharSet стоит cp1251, в параметрах тоже cp1251.
Получается, что те данные на русском языке, которые уже внесены в базу отображаются нормально на русском. А вот то, что я вношу заново превращаются в абра-кадабру. Где еще что нужно выставить, чтобы именно при внесении данных в БД на русском данные отображались нормально.
edsjeka вне форума Ответить с цитированием
Старый 18.03.2016, 05:08   #2
martofpain
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 36
По умолчанию

Если у тебя Delphi 2007 то в компоненте MyConnection1.options есть строка UseUnicode, поставь значение True и будет тебе счастье)
martofpain вне форума Ответить с цитированием
Старый 18.03.2016, 06:14   #3
martofpain
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 36
По умолчанию

Есть еще один вариант в Connection. Properties пропиши следующее
Код:
CodePage=cp1251
compress=true
CLIENT_MULTI_STATEMENTS=true
CLIENT_MULTI_RESULTS=true
и все.
Просто первый вариант подходит для MyDAC а второй для Zeos
martofpain вне форума Ответить с цитированием
Старый 18.03.2016, 20:03   #4
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Цитата:
Сообщение от martofpain Посмотреть сообщение
Если у тебя Delphi 2007 то в компоненте MyConnection1.options есть строка UseUnicode, поставь значение True и будет тебе счастье)
А если у меня Embarcadero® Delphi 10 Seattle, я использую dbexpress, SQLConnection и данные ввожу через Edit или Memo, тут есть какие-то нюансы?
edsjeka вне форума Ответить с цитированием
Старый 21.03.2016, 13:15   #5
edsjeka
Пользователь
 
Регистрация: 01.01.2016
Сообщений: 98
По умолчанию

Оказывается, такая проблема проявляется только тогда когда я использую параметры в запросе, т.е. когда делаю так:
Код:
if (RadioGroup1.ItemIndex=0) and
   (ListBox1.Items[ListBox1.ItemIndex] = 'Справочник работ') then
  begin
   zapr:='Insert into SprRabot (Rabota) values (:myrab)';
 
     DataModule1.SQLQuery1.Close;
     DataModule1.SQLQuery1.SQL.Text:=zapr;
     DataModule1.SQLQuery1.Params.ParamByName('myrab').Value:=Edit6.Text;
     DataModule1.SQLQuery1.ExecSQL;
     InsSprRabot();
     MessageDlg('Запись успешно добавлена', mtInformation, [mbOk], 0);
 
  end;
то вместо русских символов вылазят кракозяблы.
А если вставляю напрямую, без параметров, то все вставляется нормально:

Код:
if (RadioGroup1.ItemIndex=0) and
   (ListBox1.Items[ListBox1.ItemIndex] = 'Справочник работ') then
  begin
   zapr:='Insert into SprRabot (Rabota) values ("'+Edit6.Text+'")';
{   zapr:='Insert into SprRabot (Rabota) values (:myrab)';}
 
     DataModule1.SQLQuery1.Close;
     DataModule1.SQLQuery1.SQL.Text:=zapr;
    { DataModule1.SQLQuery1.Params.ParamByName('myrab').Value:=Edit6.Text;}
     DataModule1.SQLQuery1.ExecSQL;
     InsSprRabot();
     MessageDlg('Запись успешно добавлена', mtInformation, [mbOk], 0);
 
  end;
Так что не использовать параметры там где есть русские символы? Глупо как-то получается.
edsjeka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с кодировками ctpz PHP 4 06.10.2012 18:25
Помогите с кодировками kakawkin Работа с сетью в Delphi 9 05.01.2010 21:22
Проблема з кодировками! hoza_syl PHP 3 10.10.2009 15:10
Работа с кодировками tsergey PHP 1 01.09.2009 16:05
Проблема с кодировками igroman Общие вопросы C/C++ 9 25.01.2009 22:25