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

时间:2015-04-24 11:05:58

标签: c# .net windows string string-comparison

来自this question我想知道为什么äae不同(这是有道理的),但ßss被视为相等。即使this question似乎有关,我也没有找到答案,甚至提到ß将在德国等同于SS,或类似”但不是为什么。

我发现MSDN上唯一的资源是:How to: Compare Strings

以下提到但也缺少为什么

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

那么为什么评价为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

7 个答案:

答案 0 :(得分:29)

如果您查看Ä页面,您会发现并非总是Ä替代Æ(或ae),它仍然以各种语言使用。

字母ß代替:

  

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

因此ß使用单一语言,只有一条规则(ß== ss),而Ä则用于多种规则的多种语言。

请注意,考虑到case folding是:

  

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

官方Unicode 7.0 Case Folding Properties告诉我们

  

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

其中00DF是ß,0073是s,所以ß可以被认为是无用的比较,如ss。

答案 1 :(得分:3)

您的一些背景信息。 Taken from here.

Windows Alt代码

在Windows中,ALT键和数字代码的组合可用于在任何Windows应用程序中键入非英语字符(带重音的字母或标点符号)。有关使用ALT键输入重音的更详细说明。用于在Windows中输入重音的其他选项也列在本网站的“口音”部分中。

注意:字母ü,ö,ä和ß分别可以用“ue”,“oe”,“ae”或“ss”代替。

德国ALT代码

Sym Windows ALT Code

Ä   ALT+0196
ä   ALT+0228
Ö   ALT+0214
ö   ALT+0246
Ü   ALT+0220
ü   ALT+0252
ß   ALT+0223
€   ALT+0128

Taken from here.

在德语字母表中,字母ß,称为“Eszett”(IPA:[ɛstsɛt])或“scharfes S”,英文“sharp S”,是一个辅音,演变为“长s和z”的结合“(sz)和”长过s“(ss)。发言时发音为[s](见IPA)。自1996年德国的拼写改革以来,它仅在长元音和双元音之后使用,而ss是在短元音之后写的。 eszett这个名字来自两个字母S和Z,因为它们用德语发音。它在德语中也称为scharfes S(IPA:[ʃaɐ̯.fəsʔɛs,ʃaː.fəsʔɛs],意为“sharp S”。其Unicode编码为U + 00DF。

答案 2 :(得分:2)

一些背景事实:

  • 在瑞士德语中,eszet已被淘汰,并在70年代由ss取代我认为

  • 对于大写转换,官方德语替换规则一直是eszet-> SS,即使几年前已为unicode(U + 1E9E)定义了大写eszet。我从未在野外的任何地方见过它!

  • 除非您没有这些,否则对于三个完全没有合适大写版本的umlauteäö来说,没有进行过这样的更换和替换。用ae,oe,ue取代它们只是一种解决方法,但不比用β或'B'取代eszet好。

所以不同的比较结果至少有一定的意义,虽然治疗,尤其是德国的排序在德国之间并没有真正可靠的统一,比如字典或电话簿,列表,索引等。

答案 3 :(得分:2)

等待半个世纪。

今年,经过一个多世纪的争议,德国正式将添加为小写版本ß的有效大写替代品。人们习惯于使用新的大写形式需要一些时间,但只要大写版本占主导地位,就没有理由继续这种邪恶

String.Equals("Mr. Meißner", "Mr. Meissner", StringComparison.CurrentCulture) == true;

劈。

答案 4 :(得分:1)

我在这里读到的大部分内容都是真的。但是有一些误解,所以 - 作为一个德国人 - 让我直截了当地说:

ß/ẞ是来自ss或sz结扎但从不ss的德国信德文字母。这是长时间后跟s或z。

德语中的中间音节s发音为/ z /,而开头和结尾音节s发音为/ s /。由于德语中的字母z总是发音/ ts /,它需要一种方法来消除那些罕见的情况,其中通过添加另一个字母并最终为那些情况形成结扎来打破该规则,其中中音节声音/ s /需要。

声音/ s /从不出现在开头的德语单词中,只出现在一个外来单词中,用sz:Szene写的是(tada!)。所以首先需要资本ß(ẞ),因为整个单词的大写已经开始使用。 ß和ss 相同,历史上sz和ß都是,这就是为什么它被称为“eszett”!如果ß不可用,某些规则允许ß转换 ,这在现代环境中是不正确的。

Maße的正确资本化是MAẞE,Masse的正确资本化是MASSE。两者都是德语中的不同词语。

所以,在实际的德语中,ss是/ s /短元音,而ß是/ s /后长元音。假设ss和ß在任何比较中都是平等的,那是完全错误的,因为它可能会强迫完全不同意义的词语相等。周期。

答案 5 :(得分:0)

因为这就是德国人如何定义自己的语言。或许最准确的是:那些为德语定义排序/整理的人如何定义德国人如何定义德语。

在很大程度上,英语无视i的大写是I,但使用拉丁字母(例如土耳其语)的其他语言不同意。

答案 6 :(得分:-1)

在德语中,ß字符(仅以小写字母存在)听起来像ss。它的使用时常会发生变化,许多人会混淆ßss。如果我们在所有首都写一个像Fuß(英尺)这样的单词,我们会写FUSS。如果键盘或字体不支持ß,我们会写ss,而且(几乎,大部分)都是正确的。

这可以解释为什么ßss在排序方面被认为是等效的。