Unicode 角色扩展在引擎盖下是如何工作的?

Unicode 角色扩展在引擎盖下是如何工作的?,unicode,encoding,cultureinfo,culture,Unicode,Encoding,Cultureinfo,Culture,我正在通过C#阅读杰弗里·里克特的CLR。在解释字符串比较时,他指出: 当Compare方法不执行顺序比较时,它 执行字符扩展。字符扩展是指 字符扩展为多个字符,与文化无关 对于上述情况,他指出: …德语中的Eszet字符“ß”总是扩展为 “ss。因此,在代码示例中,调用Compare总是 返回0,无论我实际传入哪个区域性 我想知道运行时从哪个来源获取ß等于ss,或者它是如何计算的?导致非托管代码,COMNlsInfo::InternalCompareString,所以它是一条死胡同看看第一行。

我正在通过C#阅读杰弗里·里克特的
CLR。在解释字符串比较时,他指出:

当Compare方法不执行顺序比较时,它 执行字符扩展。字符扩展是指 字符扩展为多个字符,与文化无关

对于上述情况,他指出:

…德语中的Eszet字符“ß”总是扩展为 “ss。因此,在代码示例中,调用Compare总是 返回0,无论我实际传入哪个区域性

我想知道运行时从哪个来源获取
ß
等于
ss
,或者它是如何计算的?

导致非托管代码,
COMNlsInfo::InternalCompareString
,所以它是一条死胡同看看第一行。或者也可以点击链接。
String s1 = "Strasse";
String s2 = "Straße";
Boolean eq;

CultureInfo ci = new CultureInfo("de-­DE");
eq = String.Compare(s1, s2, true, ci) == 0; // returns true