私は次のコードを持っている:任意:なぜ文脈によってstring.Normalizeが一貫していないのですか?
string input = "ç";
string normalized = input.Normalize(NormalizationForm.FormD);
char[] chars = normalized.ToCharArray();
を私はユニットテストプロジェクト(プラットフォームでそれを実行7.
64ビットのWindows上で、Visual Studioの2010 .net4をこのコードをビルドしますCPU)2つのコンテキストでとchars
の内容を確認してください。
- Visual Studioのユニットテスト:文字は
{ 231 }
が含まれています。 - ReSharper:charsには、
{ 231 }
が含まれます。 - NCrunch:charsには
{ 99, 807 }
が含まれます。
msdn documentationでは、さまざまな動作を示す情報が見つかりませんでした。
なぜ、私は違う行動を取るのですか?私の場合、NCrunchの動作は予期された動作ですが、他の動作も同様です。
編集: 私は3.5に戻って同じ問題があります。 String.Normalize(NormalizationForm) documentationで
ええと、私はVisual Studioで{99、807}を取得します...これはあなたのプロジェクトの設定について何かがあることを意味します...たぶん。 – zmilojko
@zmilojko。あなたのテストに感謝します。私は空白の新しいプロジェクトであなたと同じ結果を得ます。だから私は2つのプロジェクト(csprojのwinmerge)の違いを確認していますが、関連性がまだ見つかりませんでした。これが私がこの質問を投稿した理由です。 – remio
それぞれの場合に 'Thread.CurrentThread.CurrentCulture'とは何ですか? – AakashM