Posts

Showing posts with the label ICU

SQLite и ICU

В течении достаточно продолжительного времени я использовал легковесную реализацию базового юникода для SQLite взамен апстримовской ICU-зависимой. Но некоторое время назад перешел на ICU, поскольку на современном оборудовании, к примеру, core quad, овчинка не стоит выделки. Кроме того, в дебиане наконец-то положительно решили вопрос, по которому я давно пинал мантейнера пакета sqlite: sqlite3: Case-insensitive matching of Unicode characters does not work because ICU extension not compiled. Теперь в debian стало возможным разрабатывать интернациональные проекты с использованием SQLite. Возможно, еще стоит потрясти мантейнера на предмет добавления пакета с анализатором, который давно есть в моей сборке. Насчет патчей расширения функциональности надеяться не приходится - тут мантейнер сразу "посылает" в апстрим, а вот патч - решение проблемы с биндингом переменных в tcl-интерфейсе было бы полезным добавить. Что интересно, апстрим рекомендует всем заинтересованным пользователям и...

Автоматическое подключение collation для русского языка в расширении ICU для SQLite

Для удобства работы с русским текстом в SQLite можно сделать автоматическое подключение нужного collation. Это позволит проводить сортировку и регистронезависимый поиск для русскоязычных текстов. В рассылке sqlite-users периодически пробегает вопрос, как же сделать такое для того или иного языка, а уж в рунете и вовсе этот вопрос "притча во языцех". При этом сразу после открытия базы мы увидим следующее: $ sqlite3 sqlite> pragma collation_list; 0|russian 1|NOCASE 2|RTRIM 3|BINARY Таким образом, получаем встроенную поддержку руссого языка, достаточно лишь для поля таблицы указать "collate russian". Для дебиана можно брать пакеты из моего репозитория . Для виндоус можно взять не сильно свежую версию SQLite с ICU здесь (вот только не обещаю, что коллэйшен russian там автоматически грузится, поскольку сборку делал отнюдь не для русскоговорящих пользователей). Так что лучше взять последнюю версию SQLite с офсайта, пропатчить и скомпилировать с ICU, который я уже собр...