![]() |
|
|
![]()
|
|
| viruseg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
Поиск по бд делаю с помощью select. С латинскими символами, работает безошибочно, но вот с кириллическими результат получается очень даже неправильный.
'select id,Date,Bufer,TypeBufer,Length from History WHERE bufer like "%'+str+'%"' Сама бд создаётся без указания кодировки. var sldb: TSQLiteDatabase; sldb := TSQLiteDatabase.Create('history'); 'CREATE TABLE History (id INTEGER PRIMARY KEY, Date TEXT, Bufer TEXT, TypeBufer TEXT, Length TEXT)' Нахожусь в полном тупике, поиск в гугле ни чего не дал. Похоже ни кто не сталкивался с этой проблемой. з.ы. Использую Delphi 2k9. Компоненты прикрепляю на всякий случай, может быть проблема в них? Это сообщение отредактировал(а) viruseg - 7.3.2010, 09:59 Присоединённый файл ( Кол-во скачиваний: 28 )
sqlite.rar 242,96 Kb |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
viruseg, учтите, что когда вы используете String с этими компонентами, то осуществляете преобразование Ansi -> Unicode. Если программа не знает какая кодировка Ansi текущая, то она может осуществить неверное преобразование.
В Delphi 2009 все контролы юникодные, так что за преобразованием нужно следить. Delphi 2009 удобен в сочетании с юникодными компонентами, для которых не нужно производить ни каких преобразований. В вашем случае удобнее Delphi 2007. Он построен на Ansi контролах. Ansi-Ansi не потребует дополнительных преобразований и позволит избежать потери информации о кодировке. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| viruseg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
А как в моём случае сделать правильное преобразование. Переход на Делфи 2007 не возможен ввиду использования некоторых компонентов заточеных под 2009. А переписывать весь проект с ноля занятие не из приятных :(
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: нет Всего: 459 |
Посмотрите эту статью http://edn.embarcadero.com/article/38582 . Часть про StringCodePage . Можно и нужно определять кодировку строки. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lukamal |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 8.3.2010 Репутация: нет Всего: нет |
Интересно посмотреть как вы решите данную проблему!!!
С месяц назад пытался сделать тоже самое из php. Посмотрите здесь http://sql.ru/forum/actualthread.aspx?tid=725368 может пригодится!!! |
|||
|
||||
| viruseg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
Проблему решил с помощью UTF8Encode/UTF8Decode.
historysltb := sldb.GetTable('select id,Date,Bufer,TypeBufer,Length from History WHERE LowerText like "%'+UTF8Encode(str)+'%"'); sqlstring:='insert into History (Date,Bufer,TypeBufer,Length,LowerText) values("'+UTF8Encode(str+'","'+str2+'","'+Rec[13].typeclbd+'","'+IntToStr(l)+'","'+str2)+'")'; Но теперь есть ещё одна проблема. Выборка записей из бд с использованием кириллицы получается регистрозависимая. Каким образом можно поправить эту проблемку? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |