![]() |
|
![]() ![]() ![]() |
|
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
задача аналогична описаной ТУТ
работаю с проектом, который изначально писался на Delphi2009 новая связка Delphi7+SQLite3... БД в юникоде, экспортирую так примерно:
в ответ знаки вопроса ????????? вместо русских букв... пробовал вместо Utf8Decode (который у меня шикарно справлялся с задачей в D2009) пользоваться вот этими костылями результат ткой же. ANSIToUTF8 и UTF8ToANSI вообще ничего не делают. так крокозяблы и выводят. может тут UTF16 какой-нибудь? или может как-то перекодировать в самом SQLite? ![]() |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
||||
|
||||
yogi89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 3.7.2008 Где: Южно-Сахалинск Репутация: нет Всего: нет |
Уверен, что сами данные в базе не хранятся криво? Можно проверить, сделав выборку строк без преобразования Utf8ToAnsi или Utf8Decode, либо через командную оболочку скулайта, перед запуском которой задать кодировку chcp 65001.
Задать принудительно кодировку SQLite можно запросом PRAGMA encoding="UTF-8" |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
уверен. в базе русские буквы есть. именно эта база работает описанным выше способом в D2009. проблема в том, что D7 не дружит с UTF так как более поздняя D2009...
я попробовал выполнить предложенную Вами команду PRAGMA encoding="UTF-8" PRAGMA encoding="chcp 65001" PRAGMA encoding="cp1251" эффекта нет. если зайти на закладку настроек бд в оболочке, то там неизменно стоит UTF-8 в качестве кодировки... даже если попытаться сменить на UTF-16... меняется только на закладке настроек (действительно, этой командой!) всё равно, спасибо за попытку. есть ещё какие-то идеи? Это сообщение отредактировал(а) CompWorm - 25.5.2010, 15:42 |
|||
|
||||
yogi89 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 3.7.2008 Где: Южно-Сахалинск Репутация: нет Всего: нет |
Не правильно меня поняли. chcp 65001 - команда для CMD, меняющая кодовую на UTF8. После, можно запустить оболочку скулайта и русские строчки будут выводиться, как надо.. Можно так проверить, действительно ли в базе данные хранятся не криво.. cp1251 - не поддерживается вообще скулайтом. Странно, почему не работает функция Utf8ToAnsi. Проверил у себя(правда, на 2010х делфях) - все прекрасно преобразовывается... |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Это встраиваемая база данных, без всяких провайдеров и датасетов
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Т.е. компонента TDataSource сразу цепляется к базе??? Круто!
|
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
Akella, ммм... там конечно есть DISQLite3DataSetImporter, но скрестить его с TDataSource у меня не особо получилось... любопытно, надо почитать на эту тему))
в основном подход такой:
... всё круто, но ведать только для D2007 и старше. судя по отзывам в инете с D7 проблемы((( с оператороми сортировки особо изощрённые чудеса)) у меня назрел вопрос, а нет отдельного модуля для работы с UTF8 для D7... может кто пытался выковыривать код из старших версий дельфи? дело в том, что этот же код с этой же БД скомпилированный под D2009 работает на ура... |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
Работаю в D6 с SQLite. Проблем никаких. Обёртка в приложенном файле. Добавляю свою надстройку над обёрткой и всё. Добавлено @ 21:11 SQLite предоставляет только API для доступа к БД. Это сообщение отредактировал(а) Демо - 30.5.2010, 23:35 Присоединённый файл ( Кол-во скачиваний: 30 ) ![]() -------------------- |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: нет Всего: 18 |
Akella, нет там этих вещей, запросы через импортируемые из dll процедурки уходят.
Довольно удобно ![]() |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
Демо, я пользуюсь именно этой обёрткой.
если кому не лень, запустите у себя примерчик и скажите, есть у вас русские символы или нет. может я просто туплю где-то... Присоединённый файл ( Кол-во скачиваний: 29 ) ![]() |
|||
|
||||
Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
Только вечером дома... Добавлено через 6 минут и 10 секунд CompWorm, А почему такой выбор - кодирование в UTF-8? -------------------- |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Да знаю я.
Я просто своим вопрос хотел намикнуть на то, что CompWorm не указал компоненты доступа. А ещё он не указал, поддерживают ли они анси или там юникод. |
|||
|
||||
CompWorm |
|
|||
![]() Допеределыватель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1689 Регистрация: 6.12.2004 Где: / Репутация: нет Всего: 31 |
Демо, по умолчанию это основная кодировка в скулайте. есть ещё всякие UTF-16, UTF-16le, UTF-16be... других не вижу... а вы какой рекомендуете пользоваться?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |