Hi Dan,

I think we need to know this here:

How do your SELECT statements look like?
What's the keyword your international clients use -  to find what data?
And what's the data in the table?


What might be already a help is:
" The LIKE operator is not case sensitive and will match upper case characters on one side against lower case characters on the other. (A bug: SQLite only understands upper/lower case for 7-bit Latin characters. Hence the LIKE operator is case sensitive for 8-bit iso8859 characters or UTF-8 characters. For example, the expression *'a' LIKE 'A'* is TRUE but *'æ' LIKE 'Æ'* is FALSE.). The infix LIKE operator is identical the user function like(/X/,/Y/) <http://www.sqlite.org/lang_expr.html#likeFunc>. "
(pasted from the sqlite docs).

Thus case insensitive searches will fail when they contain german umlauts and so on. That happens of course only if you don't use your own comparison operator.

Jan-Eric


Dan Wellisch wrote:

Austin:

Are you saying that 8859-1 encoding does not work with these international versions of MS Windows, so we would need to ensure that we are putting UTF-8 chars in the data? This would make sense if the OS uses UTF-8 chars. in the WHERE
clause so that it is searching against 8859-1 chars.
If the above understanding is correct, then I must make the inference that MS Windows for English uses 8859-1 chars in the WHERE clause of SQLlite; otherwise, the English version of MS Windows would not work either. But, it does.


Can anyone else please chime in here and either agree or dispute what Austin is saying? I would like some more feedback
before I start doing more investigation.

Thanks,

Dan
Austin Ziegler wrote:

On 8/4/05, Dan Wellisch <[EMAIL PROTECTED]> wrote:
We just put a SQLlite application in production. It handles the
display of ISO 8859-1characters just fine if they appear in the
search results.

However, users that are running German, French, etc. versions of
Microsoft Windows are complaining that search results are coming
back with 0 results whereas we know that these querys work when
the app. is running on the English version of MS Windows.

What do we do to fix this so this app works correctly on any
language version of OS? Furthermore, we also have a version of
this app. that runs under Mac OSX so I pose the same question
concerning that OS.


You may need to do some data massaging to make sure that it's *not*
ISO-8859-1 but rather convert UTF-8. This may require a couple of
round trips with WideCharToMultibyte and MultibyteToWideChar so that
you go from the OEM encoding (presuming that you're using char* as
your characters) to UTF-8 via Windows wide characters (which are
UCS-2, IIRC).

Alternatively, use something like Iconv to do this. The main problem
is (likely) that you're inserting data as if it were always ISO
8859-1, when it's not.

-austin



Reply via email to