この質問から来ていますä
とae
が異なる(理にかなっている)がß
とss
は等しいものとして扱われます。 SO)で回答が見つかりませんでした この質問 は関連しているようで、言及しているようです 「そのß
は、ドイツのSS
と同等または同等」ですが、その理由は異なります。
MSDNで見つけた唯一のリソースはこれです: 方法:文字列を比較する
ここで以下に言及しますが、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.
.....
それで、これがde-DE
カルチャまたはその他のカルチャの両方でtrue
と評価されるのはなぜですか。
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
Ä ページを見ると、常にÄがÆ(またはae)の代わりになるわけではなく、依然としてさまざまな言語で使用されていることがわかります。
代わりに ß という文字:
文字「ß」は他の言語でも使用されていましたが、現在はドイツ語でのみ使用されています。ただし、スイス、リヒテンシュタイン、ナミビアでは使用されていません。[1]ドイツ、オーストリア、ベルギー、[2]デンマーク、[3]ルクセンブルク、[4]、南チロル、[5]のドイツ語話者は、ßの標準規則に従います。
したがって、ßは単一の言語、単一の規則(ß== ss)で使用され、whileは複数の言語、複数の規則で使用されます。
ケースフォールディング は次のようになることを考慮してください。
大文字と小文字の折りたたみは、実際のテキスト変換ではなく、主にコンピュータプログラムの識別子などのテキストの大文字と小文字を区別しない比較に使用されます
公式のUnicode 7.0 Case Folding Properties は、
00DF; F; 0073 0073; #ローマ字小文字S
ここで、00DFはβであり、0073はsであるため、大文字と小文字の比較のために、βをssと見なすことができます。
あなたのためのいくつかの背景情報。 ここから取り出します。
Windows Altコード
Windowsでは、Altキーと数値コードの組み合わせを使用して、任意のWindowsアプリケーションで英語以外の文字(アクセント付き文字または句読点記号)を入力できます。 ALTキーを使ってアクセントを入力する方法の詳細については、こちらをご覧ください。 Windowsでアクセントを入力するための追加オプションは、このWebサイトのアクセントセクションにもリストされています。
注:ü、ö、ä、およびßの文字は、それぞれ「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:[ɛsˈtsɛt])または「scharfes S」と呼ばれる英語の「sharp S」という文字ßは、「long s and z」の合字として進化した子音です(ſz )および「ラウンドsより長いs」(ſs)。話すときは[s]と発音します(IPAを参照)。 1996年のドイツ語の正書法改革以来、長母音と二母音の後にのみ使用され、ssは短母音の後に使用されます。 eszettという名前は、ドイツ語で発音されるSとZの2文字に由来します。 Scharfes S(IPA:ドイツ語では[ˈʃaɐ̯.fəs ˈʔɛs、ˈʃaː.fəs] s]とも呼ばれ、「鋭いS」を意味します。UnicodeエンコーディングはU + 00DFです。
半世紀待ってください。
今年、1世紀以上にわたる論争の後、ドイツ語は正式にẞ
を小文字バージョンß
の有効な大文字の置き換えとして追加しました。新しい大文字のフォームẞ
に慣れるまでには少し時間がかかりますが、大文字のバージョンẞ
が優勢になるとすぐに、この悪事を続ける理由はなくなります。
String.Equals("Mr. Meißner", "Mr. Meissner", StringComparison.CurrentCulture) == true;
ハック。
いくつかの背景の事実:
スイスのドイツ語では、eszetは廃止され、70年代にssに置き換えられました。
大文字の変換については、数年前にユニコード(U + 1E9E)に対して大文字のeszetが定義されていたとしても、公式のドイツ語の置換ルールは常にeszet-> SSです。野生のどこでもまだ見たことがない!
このような変更や置き換えは行われていないか、常に適切な大文字のバージョンを持っている3つのウムラウトäöüには必要ありません。それらをae、oe、ueで置き換えるのは回避策にすぎませんが、eszetをベータ版または「B」で置き換えるよりもはるかに優れています。
したがって、異なる比較結果は少なくともある程度意味がありますが、ドイツでは、辞書や電話帳、リスト、インデックスなどの間で、特にwrtソートは実際には確実に均一ではありません。
私がここで読んだことのほとんどは本当です。しかし、いくつかの誤解が含まれているので、ドイツ人として、私はこれを正直に言いましょう:
ß/ẞは、ſsまたはſzの合字から来るが、決してssではない本物のドイツ語の手紙です。これはlong-sの後にsまたはzが続きます。
ドイツ語の中音節sは/ z /と発音され、開始音節と終了音節sは/ s /と発音されます。ドイツ語の文字zは常に/ ts /と発音されるため、これらのまれなケースを区別する方法が必要でした。このルールは、別の文字を追加して最終的にその合字を形成し、中音節音/ s /必要でした。
音/ s /は、最初は本物のドイツ語で、sz:Szeneで書かれた(tada!)という1つの外国語では発生しません。したがって、単語全体の大文字化が使用されるようになると、最初に大文字ß(ẞ)が必要になった。 ßとssはnotと同じですが、歴史的にſzとßは同じなので、「eszett」と呼ばれています。 ßからssへの変換を許可する特定のルールがありますßが使用できない場合これは、現代の環境では当てはまりません。
マッセの正しい大文字はMAẞEであり、マッセの正しい大文字はMASSEです。どちらもドイツ語では別の言葉です。
したがって、実際のドイツ語では、ssは/ s /で母音を前にショートし、ßは/ s /で長母音をショートします。すべての比較でssとßが等しいと仮定すると、完全に異なる意味の単語が等しくなる可能性があるため、単に間違っています。限目。
それはドイツ人が自分の言語を定義する方法だからです。またはおそらく最も正確に:ドイツ語のソート/照合を定義する人たちは、ドイツ人がドイツ語を定義する方法をどのように定義したか。
英語がi
の大文字がI
であると反論するのと同じように、ラテンアルファベットを使用する他の言語(たとえば、トルコ語)は同意しません。