|
Вопрос # 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 и все решилось.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|