Coming from [this question](https://stackoverflow.com/questions/29845211/culture-aware-string-comparison-for-umlaute) I'm wondering why `ä` and `ae` are different(which makes sense) but `ß` and `ss` are treated as equal. I haven't found an answer on SO even if [this question](https://stackoverflow.com/questions/44288/differences-in-string-compare-methods-in-c-sharp) seems to be related and even mentions *"that `ß` will compare equal to `SS` in Germany, or similar"* but not why. 

The only resource on MSDN I found was this: [How to: Compare Strings](https://msdn.microsoft.com/en-us/library/vstudio/cc165449.aspx)

Here is mentioned following but also lacks the *why*:

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

```

So why does this evaluate to `true`, both with `de-DE` culture or any other culture:

```
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

```