| 
| 
 | Вопрос # 4 905/ вопрос решён / | 
 |  Здравствуйте, эксперты!Подскажите как правильно внести изменения в поле таблицы?
 БД MySQL
 таблица tabl с полями id, autor, comment
 типы полей int(11), varchar(40), longtext  (сравнение : cp1251_general_c)
 Пользуюсь компонентом Zeos 7 .
 К базе подключаюсь нормально данные тоже выводятся нормально (изначально были проблемы с русским отображался как ??????????, решил вставкой в Properties codepage=cp1251).
 Задача: Нужно для определенного ID внести изменения в поле comment.
 Проблема: Поле вывожу в DBMemo При внесении изменений и пере подключении к БД весь русский текст в том comment который я изменил превращается в ?????? .
 Как быть?
 
|  |   Вопрос задал: sasha_merlin (статус: Посетитель)Вопрос отправлен: 11 января 2011, 02:10
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 11 января 2011, 18:02; участников в обсуждении: 2. 
|   | mirt.steelwater (статус: Посетитель), 11 января 2011, 11:38 [#1]:а отчего не пользоваться SQL? ну это дело твое, конечно. знаки вопросика от того, что база в кодировке cp1251 а записываешь наверное в какой-то другой. храни в БД текст в 16-ричном виде, т.е. берешь свой русский текст, кодируешь согласно понравившейся кодировке в 16-ричку и записываешь в бд. считываешь 16-ричку и раскодируешь. но нельзя будет делать поиск по этому полю. чтобы можно было храни все-таки в кодировке базы, но тогда прийдется искать что не так - наверное записываешь в 1251 что-то другое.. почему бы сразу не в utf-8 или utf-16 хранить? Ⓐ свобода сопротивление солидарность |  
|   | sasha_merlin (статус: Посетитель), 11 января 2011, 11:51 [#2]:почему бы сразу не в utf-8 или utf-16 хранить? 
 Потому, что при установки движок на сайте таблицы создавались автоматом и кодировка БД ставилась автоматом 1251  (а может и не автоматом но факт остается фактом кодировка 1251), в 16-ричку не выход т.к. на сайте нужно будет движок править.
 
 Какой должен быть SQL запрос чтобы передало в БД русский текст в кодировке 1251?
 |  
|   | sasha_merlin (статус: Посетитель), 11 января 2011, 17:28 [#3]:Все разрешилось спасибо OdesitVadim. 
 
 procedure TForm1.btn1Click(Sender: TObject);
var ss,pole:string;
begin
//Таблица с которой будем работать.
ZTable1.TableName:='tablica';
//Поле таблицы которое будем //обрабатывать
pole:='comments';
//Подключаемся_к_таблице
ZTable1.Active:=True;
while not (ZTable1.Eof) do
begin
ss:=ZTable1.FieldValues[pole]; 
Insert('[Начало]',ss,1);
Insert('[Конец]',ss,Length(ss));
 
ZTable1.edit;
ZTable1.FieldValues[pole]:=ss;
ZTable1.post;
 
Memo1.Lines.Add(ZTable1.FieldValues[pole]);
ZTable1.Next;
Memo1.Lines.Add('');
end;
ZTable1.Active:=False;
end; |  11 января 2011, 17:29: Статус вопроса изменён на решённый (изменил автор вопроса — sasha_merlin) 
|   | sasha_merlin (статус: Посетитель), 11 января 2011, 18:02 [#4]:Да ещё один момент На MySQL сервере сравнение в БД было latin1_swedish_ci, а у таблиц cp1251_general_ci. Поставил сравнениев БД cp1251_general_ci и все решилось.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |