![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите разобратся.
Работаю с базой mysql, расположенной в интернете. база в utf8. Все работало хорошо. Работаю с компонентом ZeosDB. Никаких преобразований кодировок не делал все сразу работало. Потом появилась необходимость подготовить базу локальную, решил использовать sqlite. Суть в том что пользователь нажимает кнопку выгрузка, и база выгружается в локальную, и если пользователь едет туда где интернет отсутствует, мог работать с базой а при выходе в интернет, записать изменения. Проблема возникла в следующем Базы заданы обе в UTF8, что mysql, что sqlite. Вот только не могу подружить один компонент Zeos и переключать с одной базы на другую. кодировки меняются ничего не понятно становится. Попробовал в mysql базе при добавлении ставить преобразование ansitoutf8 или utf8encode в базе, если зайти в phpmyadmin сразу отображаются каракули говорящие что данные в utf8. Код:
function TMainForm.Prepare(t: String):RawByteString; var b:UTF8String; begin result:=ANSIToUTF8(t); end; Потом в момент выгрузки почему то опять приходится использовать AnsiToUTF8, хотя данные вроде как в нужном формате. Почему так? ПОчему то преобразование часто вообще не срабатывает допустим: Код:
function TMainForm.Prepare(t: String):RawByteString; var b:UTF8String; begin //t=проба result:=ANSIToUTF8(t); //=проба end; Как такое реально? Delphi 2010. Кто пробовал подружить Zeos с двумя базами. почему phpmyadmin, настроенный на базу utf8 при импорте вводит не ту кодировку, а при перекодировании в базе показывает корякули... ПОчему в момент импорта utf8 значений в utf8 базу sqlite снова приходится перекодировать в utf8 Все работало отлично а тут чтот загвоздка возникла. уже 2 дня потерял на то чтоб подружить 2 базы и данные между ними сливались в нужном формате. Может дело в компоненте? Ниже выложу больше информации по коду. При вставке в базу mysql Код:
if MessageDlg('Добавить клиента '+UTF8Decode(c_name.Text)+'?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin if MainForm.DBQuery('INSERT INTO clients(c_name,adress,director,telephone) VALUES("'+MainForm.Prepare(c_name.text)+'","'+MainForm.Prepare(adress.text)+'","'+MainForm.Prepare(director.text)+'","'+MainForm.Prepare(telephone.Text)+'");') then ShowMessage('Добавление прошло успешно!'); Экспорт в базу sqlite Код:
//ПЕРВЫМ ДЕЛОМ ПЕРЕНОСИМ ПЕРВОНАЧАЛЬНЫЕ СПРАВОЧНИКИ //ПОЛЬЗОВАТЕЛЕЙ try sql:='insert into users(id,fio,tel,sync) values('; sql:=sql+ZQuery1.FieldByName('id').AsString+',"'+AnsiToUTF8(ZQuery1.FieldByName('fio').AsString)+'","'+AnsiToUTF8(ZQuery1.FieldByName('tel').AsString)+'","YES")'; DBSelect(sql,ZExport); Вообще SQLite не очень нравится, может посоветуйте что для локальной базы что использовать, чтоб без установок программы, легко переносилась. Последний раз редактировалось M.A.D.M.A.N., 07.03.2013 в 19:15. Причина: Это не ЧАТ! |