2012-01-01 12 views
3

.Netフレームワークバージョン4.0でローカライズされたエンコード名を取得するにはどうすればよいですか? .NET 4.0のローカライズされたエンコード名

日本のコンピュータ上で実行されている(地域設定)

のコード行:

Encoding.GetEncodings()[0].DisplayName 

ネット2で実行して、文字列を返す "IBM EBCDIC(米国 - カナダ)"

ネット4で実行されている、文字列 "IBM EBCDIC(米国、カナダ)、" 現在の培養は、両方の場合において、 "JA-JP" である

を返します。

+0

私はこのコード行は、あまり意味がありません知っている、と私は返す第1の符号化で本当に興味がない、これは単にネット2と.NET 4 –

答えて

3

を行う必要があり、EncodingクラスはのDisplayName性質を持っていません。実際にEncodingNameを意味していた場合、返される名前はローカライズされ、マシンにインストールされている言語パックによって異なります。 .NET 2.0では日本語の言語パックがインストールされていますが、.NET 4.0ではインストールされていないようです。

あなたはdownload it hereをすることができます。ダウンロードボタンをクリックする前に、言語を変更してください。

+0

ありがとう!、それは確かに私が逃した言語パックでした。 .net 4は私のセットアップに含まれていましたが、それは(日本の)Windowsに付属していて、すでにローカライズされていたので、.net 2で動作していたに違いありません。 これで、どのコンピュータでも適切な言語でインストールできるようになりました。 –

+0

しないでください。これはあなたのマシン上の問題です。あなたの日本人ユーザーはもちろん、自分のマシンにすでに言語パックをインストールしています。 –

+0

実際、私の製品はほとんどの場合初めてコンピュータに.net 4をインストールするので、言語パックはありません。 私の設定にそれを含める必要があります。そうしないと、Webインストーラを使用して自動的にインストールする必要があります。 –

2

Encoding.GetEncodings()は、システム内のすべての利用可能なエンコーディングのリストだけです。索引0にあるものがシステムのデフォルトであるとは限りません。あなたの現在のスレッドの文化

Encoding.GetEncoding(Thread.CurrentThread.CurrentCulture.TextInfo.ANSICodePage) 

それとも、あなたが提供してきましたエンコーディングとより一致するEBCDICCodePageプロパティを使用するに対応するエンコーディングを取得するには、次のコードを使用します。正確に何が必要なのか分からずに言うのは難しいです。

私は、そうでない場合は、なぜあなただ​​けのUTF-8を使用することはありません、あなたが実際に現在の文化である

Thread.CurrentThread.CurrentCulture.DisplayName 

ないエンコーディングを探して何を疑いますか?それとも、特に「JA-JP」文化の表示名を探しているなら、これはそれを推測するのは難しい

new CultureInfo("ja-JP").DisplayName 
+0

間の行動の変化を実証することである私が」文化のローカライズされた名前( 'NativeName'で得ることができます)を探していたら理解していますが、なぜローカライズされたエンコーディングの名前が必要ですか?私の製品で –

+0

モジュールは、私は4を.NETに移動する前に、日本語でそのリストを参照するために使用可能なエンコーディング、私の日本のcostumersのリストが表示され、変更が英語を話せない人、それらのいくつかに不快です。 –

関連する問題