Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > sqlite значения на кирилице


Автор: DYUMON 17.6.2011, 11:34
Доброго всем времени суток такая проблемка. делаю базу данных в которой будут данные на кирилице.  использую для этого sqlite. погуглив узнал что для поддержки русской кодировки необходимо использовать  ICU нашел скачал закинул библиотеки 
прописал в коде 
Код

SELECT icu_load_collation('ru_RU','RUSSIAN');


при запросе 
Код

select * from блала 


все выводится 
но когда использую запрос 
Код

WHERE pname LIKE 'блабла%''

 выводится все подряд.
если искользовать функцию UPPER то не выводится ничего
подскажите в какую сторону копать?

Автор: Akella 17.6.2011, 13:45
Цитата(DYUMON @  17.6.2011,  11:34 Найти цитируемый пост)
icu_load_collation


Я с sqlite не знаком, но мне кажется, что collation - это не кодировка, а направление сортировки.


Цитата(DYUMON @  17.6.2011,  11:34 Найти цитируемый пост)
но когда использую запрос 

Где используешь? В какой базе кодировка? В какой кодировке передаёшь кириллицу?

Автор: DYUMON 17.6.2011, 14:06
Кодировка в базе  в utf-8  пробовал передавать  в запросе ansitoutf8()  но реакция нулевая.  и еще пишу в 7 версии . думаю может попробовать что нибудь поновее может будет тогда нормально работать?   

Автор: Akella 17.6.2011, 15:47
Цитата(DYUMON @  17.6.2011,  14:06 Найти цитируемый пост)
пробовал передавать  в запросе ansitoutf8()  но реакция нулевая

А при подключении нужно кодировку указывать? Если да, то какую указываешь?

Автор: DYUMON 19.6.2011, 20:08
я через компонент цеплюсь у него указываю формат базы utf 8

Автор: Akella 20.6.2011, 21:01
значит компоненты сами должны выполнять AnsiToUTF8,намек понял?

Добавлено через 14 секунд
ну а вообще читай доки по компонентам

Автор: DYUMON 23.6.2011, 21:54
В общем повозившись покурив мануалы перешёл на lazarus там с этим делом получше обстоит. 

Автор: DYUMON 1.7.2011, 11:20
Решил таки добить эту тему. нашел придчину невезения. все дело в кодировке.

при добавление текста в базу надо делать 
Код

UTF8Encode("текст")


запрос можно делать без перекодирования. только результаты воборки подвергать перекодирыванию.
Код

UTF8Decode ("вапавпапавп")

Автор: Akella 1.7.2011, 21:07
А если при подключении указывать кодировку, то компоненты сами не кодируют? Ты доку не читал по ним?

Автор: DYUMON 2.7.2011, 09:47
там доки по ним только с указанием  свойств. 5 html страничек. и они подразумевают что им будут передаваться данные в utf8 

Автор: Keeper89 2.7.2011, 18:14
Логично будет передавать данные в UTF-8 и делать конвертирование при посылке запросов.

Автор: Poseidon 17.7.2011, 19:54
Цитата(DYUMON @  1.7.2011,  11:20 Найти цитируемый пост)
Решил таки добить эту тему. нашел придчину невезения. все дело в кодировке.
Верно разобрался. Жаль я эту тему раньше не увидел, т.к. сам с этим вопросом разбирался. Хочу добавить, что подобным образом БД "глючит" только с оператором LIKE. Если его не использовать, то проблем с кодировкой не наблюдается. http://www.sql.ru/forum/actualthread.aspx?tid=527284 более-менее подробный разбор проблемы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)