Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 204

/ вопрос открыт /

Здравствуйте, эксперты! Доброго времени суток творцам.

Использую ZEOSDBO-7.0.0 как компонент для подключения к Mysql серверу, в написании программы столкнулся лоб в лоб с кодировками. Сейчас на данный момент при вот таком коде:

  begin
    zvanie:=ComboBox2.Text;
    vazifa:=ComboBox3.Text;
    sql:='INSERT INTO `ugps` (name, sname,fname,chast,zvanie,vazifa, result, data, otveti, retest) VALUES
('+Chr(39)+Edit2.Text+Chr(39)+','+Chr(39)+Edit1.Text+Chr(39)+','+Chr(39)+Edit3.Text+Chr(39)+','+Chr(39)+ComboBox1.Text+Chr(39)+','+Chr(39)+zvanie+Chr(39)+','+Chr(39)+vazifa+Chr(39)+',NULL,NULL,NULL,NULL);';
 // ZQuery1.SQL.Add('set names cp1251;');
    ZQuery1.SQL.Add(sql);
    ZQuery1.Active:=true;
    ZQuery1.ExecSQL;
    ZQuery1.sql.Clear;
    ZQuery1.Free;
  end;

При вводе (!)русских букв(!) из приложения имею вот такую ошибку:
First chance exception at $75EF9673. Exception class EZSQLException with message 'SQL Error: Incorrect string value: '\xD0\xF3\xF2\xE1\xE0' for column 'zvanie' at row 1'. Process Tester.exe (4968)

Mysql весь перелапатил, настройки такие:

+--------------------------+-------------------------------------+
| Variable_name            | Value                               |
+--------------------------+-------------------------------------+
| character_set_client     | cp1251                              |
| character_set_connection | cp1251                              |
| character_set_database   | cp1251                              |
| character_set_filesystem | binary                              |
| character_set_results    | cp1251                              |
| character_set_server     | cp1251                              |
| character_set_system     | utf8                                |
| character_sets_dir       | C:\MySQL Server 5.1\share\charsets\ |
+--------------------------+-------------------------------------+

сама таблица такая:
| ugps  | CREATE TABLE `ugps` (
  `name` char(18) CHARACTER SET cp1251 COLLATE cp1251_bin DEFAULT NULL,
  `sname` char(18) CHARACTER SET cp1251 COLLATE cp1251_bin DEFAULT NULL,
  `fname` char(18) CHARACTER SET cp1251 COLLATE cp1251_bin DEFAULT NULL,
  `chast` char(18) CHARACTER SET cp1251 COLLATE cp1251_bin DEFAULT NULL,
  `zvanie` char(18) CHARACTER SET cp1250 COLLATE cp1250_bin DEFAULT NULL,
  `vazifa` char(33) CHARACTER SET cp1251 COLLATE cp1251_bin DEFAULT NULL,
  `result` char(33) CHARACTER SET cp1251 COLLATE cp1251_bin DEFAULT NULL,
  `data` datetime DEFAULT NULL,
  `otveti` int(11) DEFAULT NULL,
  `retest` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 |

Помогите пожалуйста, уже гугл весь затыкал по линкам, CodePage=cp1251 в свойстве Properties у компонента ZConnection1 не помогает, аналогично ZQuery1.SQL.Add('set names cp1251;'); не работает, ума не приложу как доделать, как быть в четверг уже софт сдавать...

winner13 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: winner13 (статус: 1-ый класс)
Вопрос отправлен: 19 июня 2012, 22:40
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 6 июля 2012, 14:15; участников в обсуждении: 1.
Amidamaru

Amidamaru (статус: 4-ый класс), 6 июля 2012, 14:15 [#1]:

а какая у вас версия делфи?
новые версии делфи работают на юникоде, поэтому возможно вы отправляете юникод-строку когда сервер работает с cp1251.
попробуйте
SET names unicode;
или
SET names utf8;

ps поле "zvanie" вообще имеет кодировку cp1250, это так и должно быть?
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.04 сек.