|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Не работает like на русских буквах база UTF-8 поля varchar(50) если вводить английские символы то все как положено, если русские происходит странное, например 1 Россия 2 Румыния 3 Украина 4 Вьетнам 5 Афганистан Усли пишем select * from Country where Name like 'Украина' выведет Украину, Румынию и Вьетнам(количество символов совпадает) Если поставить '%' то добавит Афганистан знаков больше. Может я чего не так делаю, или это в принципе не возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2008, 15:55 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
GoHoНе работает like на русских буквах база UTF-8 поля varchar(50) если вводить английские символы то все как положено, если русские происходит странное, например 1 Россия 2 Румыния 3 Украина 4 Вьетнам 5 Афганистан Усли пишем select * from Country where Name like 'Украина' выведет Украину, Румынию и Вьетнам(количество символов совпадает) Если поставить '%' то добавит Афганистан знаков больше. Может я чего не так делаю, или это в принципе не возможно? Все нормально должно работать. Проверял на твоем примере выдает --> Украина ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2008, 00:24 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Alexbootch, в том то и дело что не работает. dll последней версии ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2009, 14:52 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Если у Вас база в кодировке UTF-8, то и искать "Украина" нужно так: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2009, 19:41 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
А вы поддержку юникода включили?.. По умолчанию СУБД распознает только английский алфавит. Куча веток по соседству на эту тему, например, "Автоматическое подключение collation для русского языка в расширении ICU для SQLite". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2009, 21:13 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
MBG, У меня в Delphi в программе исполузуется эта http://www.sqlite.org/sqlitedll-3_6_20.zip. + класс для работы с БД. Где там collation и ICU влючать понятия не имею. Мля, всё написано, код, а как дошёл до поиска текста - беда. База в UTF8 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2009, 21:33 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Alexbootch, Пример: записи в базе: 2 строки "Администрация города" "Администрация области". Запрос вида: горо. Вот так ищет улубуду, т.е. выводит обе записи: Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2009, 21:39 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
MT-TeamAlexbootch, Пример: записи в базе: 2 строки "Администрация города" "Администрация области". Запрос вида: горо. Вот так ищет улубуду, т.е. выводит обе записи: Код: plaintext
Код: plaintext
MT-Team , пиши строки "Администрация города" "Администрация области" в базу в кодировке UTF-8, а не ANSI, т.е. "Администрация РіРѕСЂРѕРґР°" и "Администрация области" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 02:04 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Alexbootch, они там так и записаны (UTF8), если базу (файл) открыть в то-же Notepad++ то он как раз говорит что файл в кодировке UTF8. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 07:49 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
MT-Team, можете мне прислать ваши БД и врапер ? Посмотрю, потестю ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 08:50 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Dmitry Arefiev, да без проблем. Говорите E-Mail ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 09:17 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
darefiev собака da тире soft точка com ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 09:18 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
В БД все лежит в ANSI-1251, а не в UTF8. Т.е. стандартный LIKE работать не будет, как и прочие встроенные строковые функции, операторы и т.д. Врапер ничего, никуда не конвертирует. Т.е. тебе необходимо самому конвертировать строки в UTF8 перед сохранением и конвертировать в ANSI 1251 при чтении. При условии, что Delphi не юникодный. Примерно так ... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 10:04 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Dmitry Arefievчто Delphi не юникодный. А как проверить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 11:34 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
И ещё, подскажите менеджер для SQLite какой нить хороший. Модератор: Это оффтопик. Предлагаю создать новую тему с означенным вопросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 11:48 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
MT-TeamDmitry Arefievчто Delphi не юникодный. А как проверить? D2007 и новее - юникодные. Но похоже присланные юниты не адаптированы к юникодным Delphi. Так что, это не твой случай :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 11:52 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Dmitry Arefiev, скачал новый врапер, то-же комманды. Там уже есть упоминания о UTF-8. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 12:20 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
1. А как задать чтоб база создавалась в UTF? 2. Поставил Delphi 2009. Там нужно кодить/енкодить строки при вставке/выбоки? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 14:00 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
В D2006+(вроде-бы) кодировка по-умолчанию - utf8 На счет SELECT - попробуйте следующий трюк, (у меня в аналогичном случае) работает превосходно :) Код: plaintext
Здесь есть другой подводный камень, как написано в исходном коде SQLite: Код: plaintext 1. 2. 3.
Гуглю уже 2й день, из более-менее полезного нашел только статью http://habrahabr.ru/blogs/sql/57915/ , где предлагается установить ICU. Не имею ни малейшего понятия как для stand-alone приложения, написанного на delphi, установить этот самый ICU, поэтому в той статье меня заинтересовал предпоследний комментарий (цитирую полностью): naum22 апреля 2009, 20:31 Достаточно пропатчить массив sqlite3UpperToLower (надо бы его расширить) + исправить где-надо range, если мне память не изменяет. Тема модификации сурса SQLite развития не получила, гугл-же ничего интересного тоже пока не не выдал. В Си я приблизительный ноль, поэтому,потыкавшись в исходник, так и не решил проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 21:32 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Amverолее-менее полезного нашел только статью http://habrahabr.ru/blogs/sql/57915/ , где предлагается установить ICU. Не имею ни малейшего понятия как для stand-alone приложения, написанного на delphi, установить этот самый ICU, поэтому в той статье меня заинтересовал предпоследний комментарий (цитирую полностью): naum22 апреля 2009, 20:31 Достаточно пропатчить массив sqlite3UpperToLower (надо бы его расширить) + исправить где-надо range, если мне память не изменяет. Тема модификации сурса SQLite развития не получила, гугл-же ничего интересного тоже пока не не выдал. В Си я приблизительный ноль, поэтому,потыкавшись в исходник, так и не решил проблему. В этом самом форуме я уже не раз на сборку SQLite+libICU под винду ссылку давал. На офсайте есть информация (разве что не написано, что в каком месте патчить при сборке), в рассылке эскулайт эта тема регулярно поднималась... Также я выкладывал ссылку на упрощенную реализацию, которую легко собрать и весит немного (именно расширенная таблица), в рассыле эскулайт немецкий разработчик недавно еще одну реализацию публиковал, в которой по моей просьбе предусмотрел работу с русским языком (я обещался протестировать, но пока не добрался, т.к. реализация под винду, а у меня линукс на всех доступных машинах). Далее, можно забиндить collation из приложения... Сколько вам еще нужно решений, если 4-х перечисленных мало? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 22:47 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
MT-Team1. А как задать чтоб база создавалась в UTF? Читай MT-Team2. Поставил Delphi 2009. Там нужно кодить/енкодить строки при вставке/выбоки? Да кто же ее эту либу, которую ты используешь, знает ... Выбери нормальную либу. Вот список - http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2009, 23:35 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
Dmitry ArefievВыбери нормальную либу. Вот список - http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers Я как раз либу вот из этого списка и выбрал. Короч, всем спасибо, разобрался. При вставке в таблицу использую UTF8Encode а при выводе использую UTF8Decode. Всё работает замечательно, только вот и огорчает что поиск регистрозависимый. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2009, 08:35 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
AmverНа счет SELECT - попробуйте следующий трюк, (у меня в аналогичном случае) работает превосходно :) Я как раз вчера до этого допёр. То-же всё работает превосходно. Отписался выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2009, 08:37 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
MBGВ этом самом форуме я уже не раз на сборку SQLite+libICU под винду ссылку давал.С SQLite я работаю через компоненты Aducom. Качал вашу сборку http://mobigroup.ru/files/sqlite3.6.2-win.tar.bz2 , ни в одной из dll в данном архиве нету ф-ции SQLite3Open16, которая требуется компоненту для работы. Далее, натыкался я и на фикс sqlite сурсов в рассылке, вот только он датируется 2006 годом, посему применить его не является возможным: http://www.mail-archive.com/sqlite-users@sqlite.org/msg12261.html Не кинетесь-ли линком на реализацию немецкого разработчика? Поскольку пока-что мною проблема "решена" в лоб, путем дублирования данных в БД в низком регистре. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2009, 13:56 |
|
SQLite like русских букв
|
|||
---|---|---|---|
#18+
AmverMBGВ этом самом форуме я уже не раз на сборку SQLite+libICU под винду ссылку давал.С SQLite я работаю через компоненты Aducom. Качал вашу сборку http://mobigroup.ru/files/sqlite3.6.2-win.tar.bz2 , ни в одной из dll в данном архиве нету ф-ции SQLite3Open16, которая требуется компоненту для работы. В эскулайте такой функции нет, там даже другие правила именования функций. Это функция враппера. Если честно, не понимаю, а зачем враппер нужен, тем более, такой экзотический? SQLтем и хорош, что из любого языка с ним удобно работать. Amver Не кинетесь-ли линком на реализацию немецкого разработчика? Поскольку пока-что мною проблема "решена" в лоб, путем дублирования данных в БД в низком регистре. Есть где-то в архивах рассылки, но искать не стал, выложил ту версию, что Jean-Christophe Deschamps мне присылал: http://mobigroup.ru/files/sqlite-ext/unifuzz.zip А вот кусок из письма: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Дальше он пишет, что надеется, я все-таки найду где-нибудь винду, чтобы потестить, и расскажу о результатах. Найду, конечно, вот только когда... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2009, 01:12 |
|
|
start [/forum/topic.php?fid=54&msg=36351958&tid=2009092]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 410ms |
0 / 0 |