Проблемы с загрузкой данных в SQLite из 1С
От: MAI45 Россия www.almazsoft.ru
Дата: 16.09.13 04:34
Оценка:
DELPHI XE3
Загрузил через OLE справочник из 1С 1C 7.7, хранящегося в dbf в формате asci,
в таблицу SQLite с использованием оберток SQLite3.pas и SQLiteTable3.pas,
но при просмотре таблицы в SQLite Studio вместо кириллицы в полях таблицы показаны крокозябры.
БД SQLite в формате UTF-8 (по умолчанию).
Механизм OLE возвращает variant.
Видимо, требуется перекодировка импортируемых данных.
А функций для конверсии так много и типы их параметров такие разные,
что я не могу разобраться, т.к я новичок в Delphi.
Уважаемые гуру, научите, пожалуйста, как правильно загрузить кириллицу.
И очень прошу, с примером кода.
Re: Проблемы с загрузкой данных в SQLite из 1С
От: wildwind Россия  
Дата: 17.09.13 03:57
Оценка:
Здравствуйте, MAI45, Вы писали:

MAI>DELPHI XE3

MAI>Загрузил через OLE справочник из 1С 1C 7.7, хранящегося в dbf в формате asci,

А в какой кодировке исходные данные? Там могут быть разные.
Re[2]: Проблемы с загрузкой данных в SQLite из 1С
От: MAI45 Россия www.almazsoft.ru
Дата: 17.09.13 05:50
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, MAI45, Вы писали:


MAI>>DELPHI XE3

MAI>>Загрузил через OLE справочник из 1С 1C 7.7, хранящегося в dbf в формате asci,

W>А в какой кодировке исходные данные? Там могут быть разные.

Я выяснил, что проблема не в OLE справочнике из 1С.
Загружаю простой текст, а при просмотре таблицы в SQLite Studio латиница нормальная, а вместо кириллицы в полях таблицы показаны крокозябры
AnyText: ansistring;
for I := 1 to 100 do
Begin
AnyText := 'Простой AnyText' + inttostr(i);
Base.ExecSQL(Format(SQLInsert,[UTF8Encode(AnyText),IntToStr(i)]));
End;
Без UTF8Encode то же самое
Re[3]: Проблемы с загрузкой данных в SQLite из 1С
От: wildwind Россия  
Дата: 17.09.13 06:43
Оценка:
Здравствуйте, MAI45, Вы писали:

MAI>Я выяснил, что проблема не в OLE справочнике из 1С.

MAI>Загружаю простой текст, а при просмотре таблицы в SQLite Studio латиница нормальная

Твой эксперимент лишь подтверждает общеизвестный факт, что латиница в разных кодировках одинаковая.
Для начала узнай точно, с какой кодировкой ты работаешь. Выведи текст, полученный из 1С, на форму, вместе его HEX-представлением.

P.S. Всегда остается запасной вариант переброски данных через табличный документ и Excel.
Re[4]: Проблемы с загрузкой данных в SQLite из 1С
От: MAI45 Россия www.almazsoft.ru
Дата: 17.09.13 06:50
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, MAI45, Вы писали:


MAI>>Я выяснил, что проблема не в OLE справочнике из 1С.

MAI>>Загружаю простой текст, а при просмотре таблицы в SQLite Studio латиница нормальная

W>Твой эксперимент лишь подтверждает общеизвестный факт, что латиница в разных кодировках одинаковая.

W>Для начала узнай точно, с какой кодировкой ты работаешь. Выведи текст, полученный из 1С, на форму, вместе его HEX-представлением.

Я же написал, что проблема не в 1С.
Загружаю AnyText: ansistring;
Или я чего-то не понимаю?
Как вывести HEX-представление?
Re[3]: Проблемы с загрузкой данных в SQLite из 1С
От: Danchik Украина  
Дата: 17.09.13 14:01
Оценка:
Здравствуйте, MAI45, Вы писали:

[Skip]

На всякий случай, всю строку надо кодировать. По сурцам видно.
Base.ExecSQL(UTF8Encode(Format(SQLInsert,[AnyText,IntToStr(i)])))


И не забывайте что есть параметры
Re[4]: Проблемы с загрузкой данных в SQLite из 1С
От: MAI45 Россия www.almazsoft.ru
Дата: 18.09.13 03:48
Оценка:
Здравствуйте, Danchik.
Наконец-то я получил правильный совет!
Огромное спасибо, Danchik!
Тема закрыта

D>Здравствуйте, MAI45, Вы писали:


D>[Skip]


D>На всякий случай, всю строку надо кодировать. По сурцам видно.

D>
D>Base.ExecSQL(UTF8Encode(Format(SQLInsert,[AnyText,IntToStr(i)])))
D>


D>И не забывайте что есть параметры
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.