2

「インバリアント」カルチャで「İ」を小文字に変換する場合、C# (.NET v4.0) と Java の動作に違いがあります。

Java では、 を"İ".toLowerCase(Locale.ROOT)返します'i'

C# では"İ".ToLowerInvariant()"İ".ToLower(CultureInfo.InvariantCulture)どちらも戻ります"İ"が、"İ".ToLower(new CultureInfo("en-EN"))戻ります'i'

Java は変換を正しく行っているように見えますが、C# はそうではありません。これは C# のバグですか?

4

1 に答える 1

3

みてみましょう。質問の手紙

実際には

U + 0130:上にドットがあるラテン大文字I

キャラクターマップの引用)。私見ですが、インバリアント カルチャーの場合(英語またはトルコ語のいずれかのカルチャーを使用する権利はありません) ToUpperInvariant()、メソッドは文字自体を返す必要があり (既に大文字ToLowerInvariantであるため) 、結果は次のようになります。

U + xxxx: ラテン小文字I 上にドット

ただし、そのような手紙はありません。

https://en.wikipedia.org/wiki/Dotted_and_dotless_I

必要な手紙がないので、元の手紙をそのままにしておくしかありません。

たとえば"en-EN"(英語) の文化を使用する場合、文字 I With Dot Aboveを古き良き英語 に対応させる権利があり、したがってにI戻ります。iToLower()

于 2016-07-22T10:15:08.137 に答える