Да у всех все работает, пока не начинаешь использовать.
Это не собственно код, а просто доп. опция в библиотеке баз данных (SQLite).
Если в нем, в процессе сборки, не включено чтобы он понимал международные символы, то он не будет.
На HTC например эту опцию включают. В "базовом" Андроиде - нет.
Конкретно -- оператор LIKE:
https://www.sqlite.org/lang_expr.htmlThe LIKE and GLOB operators
The LIKE operator does a pattern matching comparison. The operand to the right of the LIKE operator contains the pattern and the left hand operand contains the string to match against the pattern. A percent symbol ("%") in the LIKE pattern matches any sequence of zero or more characters in the string. An underscore ("_") in the LIKE pattern matches any single character in the string. Any other character matches itself or its lower/upper case equivalent (i.e. case-insensitive matching). (A bug: SQLite only understands upper/lower case for ASCII characters by default. The LIKE operator is case sensitive by default for unicode characters that are beyond the ASCII range. For example, the expression 'a' LIKE 'A' is TRUE but 'æ' LIKE 'Æ' is FALSE.)
При сборке библиотеки SQLite нужно задать SQLITE_ENABLE_ICU:
http://www.sqlite.org/compile.htmlЯ сейчас попробовал в Андроиде 5.0 (Nexus 5, обычная официальная прошивка) -- судя по всему, исправили.
Вообще-то нужно самому индексировать так, как я это уже делаю для контактов Exchange. Тогда будет работать независимо от того, что там в этих библиотеках.
Но это не раньше, чем прекращу поддержку Андроида 2.* -- т.к. увеличится объем хранимых данных, а на этих старых телефончиках мало памяти.