|
Вопрос # 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 (статус: 1-ый класс)
Вопрос отправлен: 19 июня 2012, 22:40
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 6 июля 2012, 14:15; участников в обсуждении: 1.
|
Amidamaru (статус: 4-ый класс), 6 июля 2012, 14:15 [#1]:
а какая у вас версия делфи?
новые версии делфи работают на юникоде, поэтому возможно вы отправляете юникод-строку когда сервер работает с cp1251.
попробуйте
SET names unicode;
или
SET names utf8;
ps поле "zvanie" вообще имеет кодировку cp1250, это так и должно быть?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|