kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

続:.NET FrameworkのCultureと"々"

id:kkamegawa:20081113:p1の続き。川俣さんがXMLと文字MLに投げてくれた話題、ちょっともやっとしていたものをまとめてくださってます。ありがとうございます。一日でトップアクティブバグレポートに躍り出るとは思いませんでした。
http://www2.xml.gr.jp/log.html?MLID=xmlmoji&TID=1777&F=0&L=10&R=1
上記のMLでカルチャの話題が出ていたので、こんどはこんなプログラムを書いてみました。確認はWindows XP SP3/.NET Framework 3.5SP1です。

static void unicheck(CultureInfo culture)
{
    string check = string.Empty;
    int collect = 0;

    for(char target = '\u4e00';target <= '\u9fa5';target++)
    {
        check = string.Format("{0}々,1234", target);
        if (culture.CompareInfo.IndexOf(check, ",") != 2)
        {
            collect++;
        }
    }
    Console.WriteLine("Culture:{0} の場合 {1}個判定誤り", culture.DisplayName, collect);
}

static void Main(string[] args)
{
    CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

    foreach (CultureInfo culture in cultures)
    {
        unicheck(culture);
    }
}

前のプログラムにちょっと足して、現在システムにインストールされているCultureを全部列挙して、Cultureを使ったIndexOf()を実行しています。結果は…。

Culture:アラビア語 の場合 84個判定誤り
Culture:ブルガリア語 の場合 84個判定誤り
Culture:カタロニア語 の場合 84個判定誤り
Culture:簡体字中国語 の場合 83個判定誤り
Culture:チェコ語 の場合 84個判定誤り
Culture:デンマーク語 の場合 84個判定誤り
Culture:ドイツ語 の場合 84個判定誤り
Culture:ギリシャ語 の場合 84個判定誤り
Culture:英語 の場合 84個判定誤り
Culture:スペイン語 の場合 84個判定誤り
Culture:フィンランド語 の場合 84個判定誤り
Culture:フランス語 の場合 84個判定誤り
Culture:ヘブライ語 の場合 84個判定誤り
Culture:ハンガリー語 の場合 84個判定誤り
Culture:アイスランド語 の場合 84個判定誤り
Culture:イタリア語 の場合 84個判定誤り
Culture:日本語 の場合 75個判定誤り
Culture:韓国語 の場合 155個判定誤り
Culture:オランダ語 の場合 84個判定誤り
Culture:ノルウェー語 の場合 84個判定誤り
Culture:ポーランド語 の場合 84個判定誤り
Culture:ポルトガル語 の場合 84個判定誤り
Culture:ルーマニア語 の場合 84個判定誤り
Culture:ロシア語 の場合 84個判定誤り
Culture:クロアチア語 の場合 84個判定誤り
Culture:スロバキア語 の場合 84個判定誤り
Culture:アルバニア語 の場合 84個判定誤り
Culture:スウェーデン語 の場合 84個判定誤り
Culture:タイ語 の場合 84個判定誤り
Culture:トルコ語 の場合 84個判定誤り
Culture:ウルドゥー語 の場合 84個判定誤り
Culture:インドネシア語 の場合 84個判定誤り
Culture:ウクライナ語 の場合 84個判定誤り
Culture:ベラルーシ語 の場合 84個判定誤り
Culture:スロベニア語 の場合 84個判定誤り
Culture:エストニア語 の場合 84個判定誤り
Culture:ラトビア語 の場合 84個判定誤り
Culture:リトアニア語 の場合 84個判定誤り
Culture:ペルシャ語 の場合 84個判定誤り
Culture:ベトナム語 の場合 84個判定誤り
Culture:アルメニア語 の場合 84個判定誤り
Culture:アゼルバイジャン語 の場合 84個判定誤り
Culture:バスク語 の場合 84個判定誤り
Culture:マケドニア語 の場合 84個判定誤り
Culture:アフリカーンス語 の場合 84個判定誤り
Culture:グルジア語 の場合 84個判定誤り
Culture:フェロー語 の場合 84個判定誤り
Culture:ヒンディー語 の場合 84個判定誤り
Culture:マレー語 の場合 84個判定誤り
Culture:カザフ語 の場合 84個判定誤り
Culture:キルギス語 の場合 84個判定誤り
Culture:スワヒリ語 の場合 84個判定誤り
Culture:ウズベク語 の場合 84個判定誤り
Culture:タタール語 の場合 84個判定誤り
Culture:パンジャブ語 の場合 84個判定誤り
Culture:グジャラート語 の場合 84個判定誤り
Culture:タミール語 の場合 84個判定誤り
Culture:テルグ語 の場合 84個判定誤り
Culture:カナラ語 の場合 84個判定誤り
Culture:マラーティー語 の場合 84個判定誤り
Culture:サンスクリット語 の場合 84個判定誤り
Culture:モンゴル語 の場合 84個判定誤り
Culture:ガリシア語 の場合 84個判定誤り
Culture:コンカニ語 の場合 84個判定誤り
Culture:シリア語 の場合 84個判定誤り
Culture:ディヘビ語 の場合 84個判定誤り
Culture:インバリアント言語 (Invariant 国) の場合 84個判定誤り
Culture:アラビア語 (サウジアラビア) の場合 84個判定誤り
Culture:ブルガリア語 (ブルガリア) の場合 84個判定誤り
Culture:カタロニア語 (カタロニア) の場合 84個判定誤り
Culture:中国語 (台湾) の場合 71個判定誤り
Culture:チェコ語 (チェコ共和国) の場合 84個判定誤り
Culture:デンマーク語 (デンマーク) の場合 84個判定誤り
Culture:ドイツ語 (ドイツ) の場合 84個判定誤り
Culture:ギリシャ語 (ギリシャ) の場合 84個判定誤り
Culture:英語 (米国) の場合 84個判定誤り
Culture:フィンランド語 (フィンランド) の場合 84個判定誤り
Culture:フランス語 (フランス) の場合 84個判定誤り
Culture:ヘブライ語 (イスラエル) の場合 84個判定誤り
Culture:ハンガリー語 (ハンガリー) の場合 84個判定誤り
Culture:アイスランド語 (アイスランド) の場合 84個判定誤り
Culture:イタリア語 (イタリア) の場合 84個判定誤り
Culture:日本語 (日本) の場合 75個判定誤り
Culture:韓国語 (韓国) の場合 155個判定誤り
Culture:オランダ語 (オランダ) の場合 84個判定誤り
Culture:ノルウェー語 ブークモール (ノルウェー) の場合 84個判定誤り
Culture:ポーランド語 (ポーランド) の場合 84個判定誤り
Culture:ポルトガル語 (ブラジル) の場合 84個判定誤り
Culture:ルーマニア語 (ルーマニア) の場合 84個判定誤り
Culture:ロシア語 (ロシア) の場合 84個判定誤り
Culture:クロアチア語 (クロアチア) の場合 84個判定誤り
Culture:スロバキア語 (スロバキア) の場合 84個判定誤り
Culture:アルバニア語 (アルバニア) の場合 84個判定誤り
Culture:スウェーデン語 (スウェーデン) の場合 84個判定誤り
Culture:タイ語 (タイ) の場合 84個判定誤り
Culture:トルコ語 (トルコ) の場合 84個判定誤り
Culture:ウルドゥー語 (パキスタン・イスラム共和国) の場合 84個判定誤り
Culture:インドネシア語 (インドネシア) の場合 84個判定誤り
Culture:ウクライナ語 (ウクライナ) の場合 84個判定誤り
Culture:ベラルーシ語 (ベラルーシ) の場合 84個判定誤り
Culture:スロベニア語 (スロベニア) の場合 84個判定誤り
Culture:エストニア語 (エストニア) の場合 84個判定誤り
Culture:ラトビア語 (ラトビア) の場合 84個判定誤り
Culture:リトアニア語 (リトアニア) の場合 84個判定誤り
Culture:ペルシャ語 (イラン) の場合 84個判定誤り
Culture:ベトナム語 (ベトナム) の場合 84個判定誤り
Culture:アルメニア語 (アルメニア) の場合 84個判定誤り
Culture:アゼルバイジャン語 (ラテン、アゼルバイジャン) の場合 84個判定誤り
Culture:バスク語 (バスク) の場合 84個判定誤り
Culture:マケドニア語 (マケドニア旧ユーゴスラビア共和国) の場合 84個判定誤り
Culture:アフリカーンス語 (南アフリカ) の場合 84個判定誤り
Culture:グルジア語 (グルジア) の場合 84個判定誤り
Culture:フェロー語 (フェロー諸島) の場合 84個判定誤り
Culture:ヒンディー語 (インド) の場合 84個判定誤り
Culture:マレー語 (マレーシア) の場合 84個判定誤り
Culture:カザーフ語 (カザフスタン) の場合 84個判定誤り
Culture:キルギス語 (キルギス) の場合 84個判定誤り
Culture:スワヒリ語 (ケニア) の場合 84個判定誤り
Culture:ウズベク語 (ラテン、ウズベキスタン) の場合 84個判定誤り
Culture:タタール語 (ロシア) の場合 84個判定誤り
Culture:パンジャーブ語 (インド) の場合 84個判定誤り
Culture:グジャラート語 (インド) の場合 84個判定誤り
Culture:タミール語 (インド) の場合 84個判定誤り
Culture:テルグ語 (インド) の場合 84個判定誤り
Culture:カナラ語 (インド) の場合 84個判定誤り
Culture:マラーティー語 (インド) の場合 84個判定誤り
Culture:サンスクリット語 (インド) の場合 84個判定誤り
Culture:モンゴル語 (キリル、モンゴル) の場合 84個判定誤り
Culture:ガリシア語 (ガリシア) の場合 84個判定誤り
Culture:コンカニ語 (インド) の場合 84個判定誤り
Culture:シリア語 (シリア) の場合 84個判定誤り
Culture:ディヘビ語 (モルディブ) の場合 84個判定誤り
Culture:アラビア語 (イラク) の場合 84個判定誤り
Culture:中国語 (中華人民共和国) の場合 83個判定誤り
Culture:ドイツ語 (スイス) の場合 84個判定誤り
Culture:英語 (英国) の場合 84個判定誤り
Culture:スペイン語 (メキシコ) の場合 84個判定誤り
Culture:フランス語 (ベルギー) の場合 84個判定誤り
Culture:イタリア語 (スイス) の場合 84個判定誤り
Culture:オランダ語 (ベルギー) の場合 84個判定誤り
Culture:ノルウェー語 ニーノシク (ノルウェー) の場合 84個判定誤り
Culture:ポルトガル語 (ポルトガル) の場合 84個判定誤り
Culture:セルビア語 (ラテン, セルビア) の場合 84個判定誤り
Culture:スウェーデン語 (フィンランド) の場合 84個判定誤り
Culture:アゼルバイジャン語 (キリル、アゼルバイジャン) の場合 84個判定誤り
Culture:マレー語 (ブルネイ・ダルサラーム国) の場合 84個判定誤り
Culture:ウズベク語 (キリル、ウズベキスタン) の場合 84個判定誤り
Culture:アラビア語 (エジプト) の場合 84個判定誤り
Culture:中国語 (香港特別行政区) の場合 71個判定誤り
Culture:ドイツ語 (オーストリア) の場合 84個判定誤り
Culture:英語 (オーストラリア) の場合 84個判定誤り
Culture:スペイン語 (スペイン) の場合 84個判定誤り
Culture:フランス語 (カナダ) の場合 84個判定誤り
Culture:セルビア語 (キリル, セルビア) の場合 84個判定誤り
Culture:アラビア語 (リビア) の場合 84個判定誤り
Culture:中国語 (シンガポール) の場合 83個判定誤り
Culture:ドイツ語 (ルクセンブルグ) の場合 84個判定誤り
Culture:英語 (カナダ) の場合 84個判定誤り
Culture:スペイン語 (グアテマラ) の場合 84個判定誤り
Culture:フランス語 (スイス) の場合 84個判定誤り
Culture:アラビア語 (アルジェリア) の場合 84個判定誤り
Culture:中国語 (マカオ特別行政区) の場合 83個判定誤り
Culture:ドイツ語 (リヒテンシュタイン) の場合 84個判定誤り
Culture:英語 (ニュージーランド) の場合 84個判定誤り
Culture:スペイン語 (コスタリカ) の場合 84個判定誤り
Culture:フランス語 (ルクセンブルグ) の場合 84個判定誤り
Culture:アラビア語 (モロッコ) の場合 84個判定誤り
Culture:英語 (アイルランド) の場合 84個判定誤り
Culture:スペイン語 (パナマ) の場合 84個判定誤り
Culture:フランス語 (モナコ) の場合 84個判定誤り
Culture:アラビア語 (チュニジア) の場合 84個判定誤り
Culture:英語 (南アフリカ) の場合 84個判定誤り
Culture:スペイン語 (ドミニカ共和国) の場合 84個判定誤り
Culture:アラビア語 (オマーン) の場合 84個判定誤り
Culture:英語 (ジャマイカ) の場合 84個判定誤り
Culture:スペイン語 (ベネズエラ) の場合 84個判定誤り
Culture:アラビア語 (イエメン) の場合 84個判定誤り
Culture:英語 (カリブ) の場合 84個判定誤り
Culture:スペイン語 (コロンビア) の場合 84個判定誤り
Culture:アラビア語 (シリア) の場合 84個判定誤り
Culture:英語 (ベリーズ) の場合 84個判定誤り
Culture:スペイン語 (ペルー) の場合 84個判定誤り
Culture:アラビア語 (ヨルダン) の場合 84個判定誤り
Culture:英語 (トリニダード・トバゴ) の場合 84個判定誤り
Culture:スペイン語 (アルゼンチン) の場合 84個判定誤り
Culture:アラビア語 (レバノン) の場合 84個判定誤り
Culture:英語 (ジンバブエ) の場合 84個判定誤り
Culture:スペイン語 (エクアドル) の場合 84個判定誤り
Culture:アラビア語 (クウェート) の場合 84個判定誤り
Culture:英語 (フィリピン共和国) の場合 84個判定誤り
Culture:スペイン語 (チリ) の場合 84個判定誤り
Culture:アラビア語 (アラブ首長国連邦) の場合 84個判定誤り
Culture:スペイン語 (ウルグアイ) の場合 84個判定誤り
Culture:アラビア語 (バーレーン) の場合 84個判定誤り
Culture:スペイン語 (パラグアイ) の場合 84個判定誤り
Culture:アラビア語 (カタール) の場合 84個判定誤り
Culture:スペイン語 (ボリビア) の場合 84個判定誤り
Culture:スペイン語 (エルサルバドル) の場合 84個判定誤り
Culture:スペイン語 (ホンジュラス) の場合 84個判定誤り
Culture:スペイン語 (ニカラグア) の場合 84個判定誤り
Culture:スペイン語 (プエルトリコ) の場合 84個判定誤り
Culture:繁体字中国語 の場合 71個判定誤り
Culture:セルビア語 の場合 84個判定誤り
Culture:南サーミ語 (ノルウェー) の場合 0個判定誤り
Culture:セルビア語 (キリル、ボスニア・ヘルツェゴビナ) の場合 0個判定誤り
Culture:ズールー語 の場合 0個判定誤り
Culture:コーサ語 の場合 0個判定誤り
Culture:フリジア語 (オランダ) の場合 0個判定誤り
Culture:ツワナ語 の場合 0個判定誤り
Culture:北サーミ語 (スウェーデン) の場合 0個判定誤り
Culture:南サーミ語 (スウェーデン) の場合 0個判定誤り
Culture:クロアチア語 (ボスニア・ヘルツェゴビナ) の場合 0個判定誤り
Culture:イナリ サーミ語 (フィンランド) の場合 0個判定誤り
Culture:ケチュア語 (ペルー) の場合 0個判定誤り
Culture:北サーミ語 (フィンランド) の場合 0個判定誤り
Culture:スコルト サーミ語 (フィンランド) の場合 0個判定誤り
Culture:ウェールズ語 の場合 0個判定誤り
Culture:ボスニア語 (ラテン、ボスニア・ヘルツェゴビナ) の場合 0個判定誤り
Culture:ボスニア語 (キリル、ボスニア・ヘルツェゴビナ) の場合 0個判定誤り
Culture:フィリピノ語 (フィリピン) の場合 0個判定誤り
Culture:ルレ サーミ語 (ノルウェー) の場合 0個判定誤り
Culture:マプ語 (チリ) の場合 0個判定誤り
Culture:イヌクティトット語 (ラテン、カナダ) の場合 0個判定誤り
Culture:マオリ語 の場合 0個判定誤り
Culture:ケチュア語 (エクアドル) の場合 0個判定誤り
Culture:アイルランド語 (アイルランド) の場合 0個判定誤り
Culture:セルビア語 (ラテン、ボスニア・ヘルツェゴビナ) の場合 0個判定誤り
Culture:モホーク語 (モホーク) の場合 0個判定誤り
Culture:ルレ サーミ語 (スウェーデン) の場合 0個判定誤り
Culture:ルクセンブルク語 (ルクセンブルグ) の場合 0個判定誤り
Culture:北ソト語 の場合 0個判定誤り
Culture:ケチュア語 (ボリビア) の場合 0個判定誤り
Culture:北サーミ語 (ノルウェー) の場合 0個判定誤り
Culture:マルタ語 の場合 0個判定誤り
Culture:ロマンシュ語 (スイス) の場合 0個判定誤り

大きくいくつかのグループに分かれます。

  • 84個の誤り(多数)
  • 日本の誤り
  • 0個の誤り(実はカルチャがあるだけで、NLSとしては何も実装されていない?)
  • 中国語固有の誤り(シンガポール/繁体字/香港特別行政区/台湾/簡体字)
  • 韓国語の誤り(155個!)

興味深い間違え方ですね。なんかわざとやっているのかと思います。
id:NyaRuRuさんもフィードバックのほうにコメントと検証ありがとうございます。