|
.NET TIPS Encodingクラスで扱えるエンコーディング名は?[C#、VB]デジタルアドバンテージ2003/04/11 2008/07/24 更新 |
![]() |
|
|
|
「TIPS:文字列をシフトJISとしてバイト列に変換するには?」や「TIPS:バイト列を文字列に変換するには?」では、文字列のエンコーディングとしてシフトJISを使用するために、シフトJISをサポートしているEncodingクラス(System.Text名前空間)のインスタンスを次のようにして取得している。
|
||
| Encodingクラス(System.Text名前空間)のインスタンス作成(上:C#、下:VB) |
この場合では、引数として、シフトJISの文字コード体系(キャラクタ・セット)を表す値を文字列「Shift_JIS」で指定している。シフトJIS以外では、日本語のエンコーディングによく使用されるキャラクタ・セットとして、次のようなものが指定できる。
- EUC-JP
- iso-2022-jp
後者のiso-2022-jpは、いわゆる「JISコード」と呼ばれるものだ。しかし、MSDNのEncoding.GetEncodingの項には、これらの値は列挙されていない。GetEncodingメソッドのパラメータとしては、ほかにどのようなキャラクタ・セットが指定できるのだろうか?
GetEncodingメソッドによるキャラクタ・セットの列挙
GetEncodingメソッドの引数に、文字列として指定可能なキャラクタ・セットの名前は、IANA(Internet Assigned Numbers Authority)で登録されているキャラクタ・セットの名称が採用されている(ただし、そこで定義されたすべてのキャラクタ・セットを使用できるわけではない)
また、GetEncodingメソッドの引数には、キャラクタ・セットの名前ではなく、それに対応したコード・ページの値を指定することもできる。例えば、シフトJISに対応したコード・ページ値は「932」なので、上のコードは次のように記述しても同等だ。
|
||
| Encoding.GetEncoding("Shift_JIS")と同等の記述(上:C#、下:VB) |
MSDNにもあるように、GetEncodingメソッドの引数として指定できるコード・ページ値は、0以上65535未満の整数値である。そしてEncodingクラスでは、WebNameプロパティにより、IANAで登録されているエンコーディングの名前を取得することができる。また、EncodingNameプロパティにより、「ユーザーが判別できる形」で、エンコーディングの名前を取得することができる。
よって、すべてのコード・ページ値についてEncodingオブジェクトを作成し、上述のプロパティを表示させれば、システムで使用可能なすべてのエンコーディングを列挙できる。このプログラムは次のようになる(実装されていないコード・ページ値を指定してGetEncodingメソッドを呼び出せば例外が発生するが、これは無視している)。
|
|
| 利用可能なコード・ページ値とキャラクタ・セット名を列挙するC#のサンプル・プログラム(enumenc.cs) | |
|
|
| 利用可能なコード・ページ値とキャラクタ・セット名を列挙するVBのサンプル・プログラム(enumenc.vb) | |
筆者の日本語版Windows XP環境でこのサンプル・プログラムを実行した結果を表にまとめると次のようになった。
| コード・ページ値 | WebNameプロパティ | EncodingNameプロパティ |
| 0 | shift_jis | 日本語 (シフト JIS) |
| 37 | IBM037 | IBM EBCDIC (米国 - カナダ) |
| 437 | IBM437 | OEM 米国 |
| 500 | IBM500 | IBM EBCDIC (インターナショナル) |
| 737 | ibm737 | ギリシャ語 (DOS) |
| 775 | ibm775 | バルト言語 (DOS) |
| 850 | ibm850 | 西ヨーロッパ語 (DOS) |
| 852 | ibm852 | 中央ヨーロッパ言語 (DOS) |
| 855 | IBM855 | OEM キリル語 |
| 857 | ibm857 | トルコ語 (DOS) |
| 860 | IBM860 | ポルトガル語 (DOS) |
| 861 | ibm861 | アイスランド語 (DOS) |
| 863 | IBM863 | フランス語 (カナダ)(DOS) |
| 865 | IBM865 | ノルウェー語 (DOS) |
| 866 | cp866 | キリル語 (DOS) |
| 869 | ibm869 | ギリシャ語 モダン (DOS) |
| 874 | windows-874 | タイ語 (Windows) |
| 875 | cp875 | IBM EBCDIC (ギリシャ語 モダン) |
| 932 | shift_jis | 日本語 (シフト JIS) |
| 936 | gb2312 | 簡体字中国語 (GB2312) |
| 949 | ks_c_5601-1987 | 韓国語 |
| 950 | big5 | 繁体字中国語 (Big5) |
| 1026 | IBM1026 | IBM EBCDIC (トルコ語 Latin-5) |
| 1200 | utf-16 | Unicode |
| 1201 | unicodeFFFE | Unicode (Big-Endian) |
| 1250 | windows-1250 | 中央ヨーロッパ言語 (Windows) |
| 1251 | windows-1251 | キリル語 (Windows) |
| 1252 | Windows-1252 | 西ヨーロッパ言語 (Windows) |
| 1253 | windows-1253 | ギリシャ語 (Windows) |
| 1254 | windows-1254 | トルコ語 (Windows) |
| 1255 | windows-1255 | ヘブライ語 (Windows) |
| 1256 | windows-1256 | アラビア語 (Windows) |
| 1257 | windows-1257 | バルト語 (Windows) |
| 1258 | windows-1258 | ベトナム語 (Windows) |
| 1361 | Johab | 韓国語 (Johab) |
| 10000 | macintosh | 西ヨーロッパ言語 (Mac) |
| 10001 | x-mac-japanese | 日本語 (Mac) |
| 10002 | x-mac-chinesetrad | 繁体字中国語 (Mac) |
| 10003 | x-mac-korean | 韓国語 (Mac) |
| 10006 | x-mac-greek | ギリシャ語 (Mac) |
| 10007 | x-mac-cyrillic | キリル語 (Mac) |
| 10008 | x-mac-chinesesimp | 簡体字中国語 (Mac) |
| 10010 | x-mac-romanian | ルーマニア語 (Mac) |
| 10017 | x-mac-ukrainian | ウクライナ語 (Mac) |
| 10029 | x-mac-ce | 中央ヨーロッパ語 (Mac) |
| 10079 | x-mac-icelandic | アイスランド語 (Mac) |
| 10081 | x-mac-turkish | トルコ語 (Mac) |
| 10082 | x-mac-croatian | クロアチア語 (Mac) |
| 20000 | x-Chinese-CNS | 繁体字中国語 (CNS) |
| 20127 | us-ascii | US-ASCII |
| 20261 | x-cp20261 | T.61 |
| 20290 | IBM290 | IBM EBCDIC (日本語カタカナ) |
| 20866 | koi8-r | キリル語 (KOI8-R) |
| 20932 | EUC-JP | 日本語 (JIS 0208-1990 and 0212-1990) |
| 20936 | x-cp20936 | 簡体字中国語 (GB2312-80) |
| 20949 | x-cp20949 | 韓国語 Wansung |
| 21027 | x-cp21027 | Ext Alpha Lowercase |
| 21866 | koi8-u | キリル語 (KOI8-R) |
| 28591 | iso-8859-1 | 西ヨーロッパ言語 (ISO) |
| 28592 | iso-8859-2 | 中央ヨーロッパ言語 (ISO) |
| 28594 | iso-8859-4 | バルト語 (ISO) |
| 28595 | iso-8859-5 | キリル語 (ISO) |
| 28597 | iso-8859-7 | ギリシャ語 (ISO) |
| 28599 | iso-8859-9 | トルコ語 (ISO) |
| 28603 | iso-8859-13 | エストニア語 (ISO) |
| 28605 | iso-8859-15 | ラテン語 9 (ISO) |
| 50220 | iso-2022-jp | 日本語 (JIS) |
| 50221 | csISO2022JP | 日本語 (JIS-Allow 1 byte Kana) |
| 50222 | iso-2022-jp | 日本語 (JIS-Allow 1 byte Kana - SO/SI) |
| 50225 | iso-2022-kr | 韓国語 (ISO) |
| 50227 | x-cp50227 | 簡体字中国語 (ISO-2022) |
| 51932 | euc-jp | 日本語 (EUC) |
| 51936 | EUC-CN | 簡体字中国語 (EUC) |
| 51949 | euc-kr | 韓国語 (EUC) |
| 52936 | hz-gb-2312 | 簡体字中国語 (HZ) |
| 54936 | GB18030 | 簡体字中国語 (GB18030) |
| 65000 | utf-7 | Unicode (UTF-7) |
| 65001 | utf-8 | Unicode (UTF-8) |
この表のうち、WebNameプロパティとして取得された文字列が、GetEncodingメソッドのパラメータで文字列として指定可能な値だ(文字の大文字/小文字は区別されない)。
なお、コード・ページ値が0の場合も「shift_jis」となっているが、これはシステムのデフォルトのエンコーディングであり、Encoding.Defaultプロパティによって得られるEncodingオブジェクトと同じものとなる。
また、us-ascii(20127)やutf-8(65001)などの一般的なものについては、わざわざGetEncodingメソッドを呼ばなくても、Encoding.ASCIIプロパティやEncoding.UTF8プロパティなどのstaticなプロパティからEncodingオブジェクトを得ることができるようになっている。
実際には、GetEncodingメソッドのパラメータで指定可能な文字列の元となるデータは、レジストリの次のキー配下で定義されているようだ。
HKEY_CLASSES_ROOT\MIME\Database\Charset
ここでは、キャラクタ・セット名に加えて、その別名(Alias)も定義されている。例えば、「Shift_JIS」の別名としては、次のようなものがある。
- csShiftJIS
- csWindows31J
- ms_Kanji
- shift-jis
- x-ms-cp932
- x-sjis
これらの文字列はどれも、「Shift_JIS」の代わりにGetEncodingメソッドの引数として指定できる。![]()
| カテゴリ:クラス・ライブラリ 処理対象:文字列 使用ライブラリ:Encodingクラス(System.Text名前空間) 関連TIPS:文字列の長さを取得するには? 関連TIPS:文字列をシフトJISとしてバイト列に変換するには? 関連TIPS:バイト列を文字列に変換するには? |
|
||||||||||||||||||||||||||||
| 更新履歴 | |
|
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


