使用使用ICU库进行字符串比较的.NET 6时,以下C#代码返回true:
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-de");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-de");
"ß".Equals("SS", StringComparison.CurrentCultureIgnoreCase); // false with ICU
据我所知,根据Unicode大小写折叠规则(以及更重要的是标准德语拼写规则),这应该是正确的:
00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S
(CaseFolding.txt)
当使用遗留Microsoft NLS实现时,上述代码返回true.
那么,为什么.NET 6使用的ICU库与Unicode标准不同,或者我对标准的理解不正确?
Original C# question导致这个.