来自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.
.....
那么为什么评价为true
,de-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
答案 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
在德语字母表中,字母ß,称为“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
在排序方面被认为是等效的。