The main reason for this - default string comparisons - is knowing the locale. This means using locale data tables for comparisons (including equality).
Many (if not most) Unicode characters do not matter for many locales and therefore do not exist (or do, but correspond to something or nothing).
See Michael Kaplan’s blog post “Weight Sorting . ” This blog series contains a lot of background information (the APIs are native, but as I understand it, the mechanisms in .NET are the same).
Quick version: this is a difficult area where you can expect correct comparison comparisons (normal language), this leads to odd things with code points for glyphs outside your language.
Richard
source share