为什么"ss"等同于德国锋利人物'ß'?

Tim*_*ter 34 .net c# windows string string-comparison

从未来的这个问题,我不知道为什么äae是不同的(这是有道理的),但ßss视为相等.即使这个问题似乎是相关的,我也没有找到答案,甚至提到"这ß将与SS德国或类似的相提并论",但不是为什么.

我发现MSDN上唯一的资源是:如何:比较字符串

这里提到以下但也缺乏原因:

// "They dance in the street." 
// Linguistically (in Windows), "ss" is equal to 
// the German essetz: 'ß' character in both en-US and de-DE cultures. 
.....
Run Code Online (Sandbox Code Playgroud)

那么,为什么要truede-DE文化或任何其他文化进行评估:

var ci = new CultureInfo("de-DE");
int result = ci.CompareInfo.Compare("strasse", "straße", CompareOptions.IgnoreNonSpace); // 0
bool equals = String.Equals("strasse", "straße", StringComparison.CurrentCulture); // true
equals = String.Equals("strasse", "straße", StringComparison.InvariantCulture);  // true
Run Code Online (Sandbox Code Playgroud)

xan*_*tos 29

如果你看一下Ä页,你会发现并不总是Ä替代Æ(或ae),它仍然用于各种语言.

字母ß代替:

虽然字母"ß"已用于其他语言,但它现在仅用于德语.但是,瑞士,列支敦士登或纳米比亚没有使用它.[1] 德国,奥地利,比利时,[2]丹麦,[3]卢森堡[4]和意大利南蒂罗尔[5]的德语发音者遵循ß的标准规则.

所以ß使用单一语言,只有一个规则(ß== ss),而Ä则用于多种语言,有多种规则.

请注意,考虑到案例折叠是:

案例折叠主要用于文本的无标记比较,例如计算机程序中的标识符,而不是实际的文本转换

官方的Unicode 7.0 Case Folding Properties告诉我们

00DF; F; 0073 0073; #LATIN SMALL LETTER SHARP S.

其中00DF是ß,0073是s,所以ß可以考虑,无需比较,作为ss.