On Apr 12, 2019, at 8:51 AM, x <[email protected]> wrote:
>
> How do I do the same thing if the string param is a utf-8 or utf-16 string
> and the SearchChar is a Unicode character?
Convert the characters to 32-bit wide characters first, then iterate over the
array of uint32_t or similar.
One method is shown by the SQLite-internal function sqlite3Utf8Read(). It’s
static in the amalgamation build, but since SQLite is public domain, you can
just copy that function’s text out into your program and use it there or modify
it to suit your purposes.
Your platform libraries may have UTF-8 to UTF-32 or similar mechanisms.
On POSIX platforms, the most common of these is iconv(3).
On Windows, the legacy of UCS-2 and UTF-16 makes this difficult, but if you can
stick to the Basic Multilingual Plane, converting UTF-8 to UCS-2 gives the same
effect. See MultiByteToWideChar(…, CP_UTF8, …):
https://docs.microsoft.com/windows/desktop/api/stringapiset/nf-stringapiset-multibytetowidechar
For all platforms, there’s ICU. That’s of particular interest with SQLite
since there’s an included ICU extension you can include to get more Unicode
power in SQLite:
https://www.sqlite.org/compile.html#enable_icu
There are complications that your questions don’t push into, but beware that if
you start getting beyond simple “character in string” questions, you’ll
eventually have to confront them: combining characters, etc.
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users