Sorting strangeness
Mark Waddingham
mark at livecode.com
Wed Sep 18 02:57:12 EDT 2019
On 2019-09-16 21:54, Paul Dupuis via use-livecode wrote:
> IF sort lines of <var> ascending text was working correctly for lines
> of mixed ASCII and Unicode, for someone sorting lines of text that can
> be Native text, Unicode text (both RTL and LTR), or mixtures of both,
> is it better to use SORT ... TEXT or SORT ... INTERNATIONAL? I don't
> know enough about what the "international" (using the system locale
> settings) and Unicode may mean in relation to one another?
You should use 'sort international' when you are displaying a sorted
list
to a user who is looking through it manually.
The ordering provided by 'sort text' is purely by unicode codepoint,
which
has no direct relation to 'expected' order when read by a human and
instead
is determined by technical considerations (structuring a large 21-bit
space,
frequency of use and, most importantly, round-tripping to legacy
encodings and
standards).
The core of the sort order provided by 'international' sorting is the
Unicode Collation Algorithm - which provides (at its code) a
locale-independent
order for all the languages/scripts present in Unicode. e.g. Latin
European
languages are generally expected to come before Greek which is expected
to
come before Cyrillic.
This core order is then tailored by locale to enable account to be taken
of the individual expectations of the user of the sorted list. For
example,
different languages have different sort orders for what you might
consider
the 'same letters' due to using the same glyphs. For example, a Swedish
user
would expect 'z' to sort before 'ö'; whereas a German user would expect
'ö' to sort before 'z'.
The engine uses ICU's implementation of Unicode collation, and supports
a wide
range of locales - the locale used is read on engine startup from the
user's
system settings.
Hope this helps,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list