概要
テキスト ファイルを操作するコンソール アプリを作成していて、ファイルの文字コード指定方法をオプション化するために、Encoding.GetEncoding()で指定可能な主要な表記を調べてみた。
要約
- WebNameでの指定
- Case-insensitive
-
UTF-8LE
UTF-8BE
は定義されていない。(当たり前) -
Encoding.Unicode
UTF-16
UTF-16LE
UCS-2
は等価。 -
Encoding.UTF32
UTF-32
UTF-32LE
は等価。 -
UCS-1
UCS-4
は定義されていないが、UCS-2
は定義されている。 - BOM無しの表記は定義されていない。
-
UTF-8N
UTF-16N
UTF-32N
などは、日本固有のローカルルルルルールのため定義されていない。
-
- UNICODE系は基本BOMあり。
- ただし、
UTF-7
にはBOMは存在しない。 - BOM無しを作る場合は個別のクラスで new する必要がある。
- ~~UTF-7 ⇒
new UTF7Encoding();
UTF7Encoding コンストラクター (System.Text) | Microsoft Docs~~~~ - UTF-8 ⇒
new UTF8Encoding(bool encoderShouldEmitUTF8Identifier);
UTF8Encoding コンストラクター (System.Text) | Microsoft Docs
encoderShouldEmitUTF8Identifier
がfalse
でBOMなし - UTF-16 ⇒
new UnicodeEncoding(bool bigEndian, bool byteOrderMark);
UnicodeEncoding コンストラクター (System.Text) | Microsoft Docs
byteOrderMark
がfalse
でBOMなし - UTF-32⇒
new UTF32Encoding(bool bigEndian, bool byteOrderMark);
UTF32Encoding コンストラクター (System.Text) | Microsoft Docs
byteOrderMark
がfalse
でBOMなし
- ~~UTF-7 ⇒
- ただし、
- UNICODEに限らず、BOMなしの場合は
Encoding.GetPreamble()
は 要素数0のbyte配列 を返す。
(UNICODEに限らず、null はない。)。 -
Encoding.Default
はOSのシステム文字コード。- CLRのEncodingではない。
- 日本語版Windowsだと Shit-JIS 。
- 欧米版Windowsだと Windows-1252 。
- 最近のLinuxやmacだと UTF-8 (予想)。
-
S-JIS
は定義されていない。 -
CP932
MS932
WINDOWS-31J
は定義されていない。 (当たり前)
主要な表記一覧取得結果
code | class | CodePage | WindowsCodePage | GetPreamble() | EncodingName | HeaderName | BodyName | WebName |
---|---|---|---|---|---|---|---|---|
Encoding.GetEncoding(1252) | SBCSCodePageEncoding | 1252 | 1252 | (0) | 西ヨーロッパ言語 (Windows) | Windows-1252 | iso-8859-1 | Windows-1252 |
Encoding.GetEncoding(932) | DBCSCodePageEncoding | 932 | 932 | (0) | 日本語 (シフト JIS) | iso-2022-jp | iso-2022-jp | shift_jis |
Encoding.GetEncoding(65001) | UTF8Encoding | 65001 | 1200 | EF BB BF (3) | Unicode (UTF-8) | utf-8 | utf-8 | utf-8 |
Encoding.GetEncoding("s-jis") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("shift-jis") | DBCSCodePageEncoding | 932 | 932 | (0) | 日本語 (シフト JIS) | iso-2022-jp | iso-2022-jp | shift_jis |
Encoding.GetEncoding("cp932") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("ms932") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("windows-31j") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-7") | UTF7Encoding | 65000 | 1200 | (0) | Unicode (UTF-7) | utf-7 | utf-7 | utf-7 |
Encoding.GetEncoding("utf-8") | UTF8Encoding | 65001 | 1200 | EF BB BF (3) | Unicode (UTF-8) | utf-8 | utf-8 | utf-8 |
Encoding.GetEncoding("utf-16") | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.GetEncoding("utf-16be") | UnicodeEncoding | 1201 | 1200 | FE FF (2) | Unicode (Big-Endian) | utf-16BE | utf-16BE | utf-16BE |
Encoding.GetEncoding("utf-16le") | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.GetEncoding("utf-32") | UTF32Encoding | 12000 | 1200 | FF FE 00 00 (4) | Unicode (UTF-32) | utf-32 | utf-32 | utf-32 |
Encoding.GetEncoding("utf-32be") | UTF32Encoding | 12001 | 1200 | 00 00 FE FF (4) | Unicode (UTF-32 ビッグ エンディアン) | utf-32BE | utf-32BE | utf-32BE |
Encoding.GetEncoding("utf-32le") | UTF32Encoding | 12000 | 1200 | FF FE 00 00 (4) | Unicode (UTF-32) | utf-32 | utf-32 | utf-32 |
Encoding.GetEncoding("utf-7n") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-8n") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-16n") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-16ben") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-16len") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-32n") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-32ben") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("utf-32len") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("ucs-1") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("ucs-2") | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.GetEncoding("ucs-4") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("S-JIS") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("SHIFT-JIS") | DBCSCodePageEncoding | 932 | 932 | (0) | 日本語 (シフト JIS) | iso-2022-jp | iso-2022-jp | shift_jis |
Encoding.GetEncoding("CP932") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("MS932") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("WINDOWS-31J") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-7") | UTF7Encoding | 65000 | 1200 | (0) | Unicode (UTF-7) | utf-7 | utf-7 | utf-7 |
Encoding.GetEncoding("UTF-8") | UTF8Encoding | 65001 | 1200 | EF BB BF (3) | Unicode (UTF-8) | utf-8 | utf-8 | utf-8 |
Encoding.GetEncoding("UTF-16") | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.GetEncoding("UTF-16BE") | UnicodeEncoding | 1201 | 1200 | FE FF (2) | Unicode (Big-Endian) | utf-16BE | utf-16BE | utf-16BE |
Encoding.GetEncoding("UTF-16LE") | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.GetEncoding("UTF-32") | UTF32Encoding | 12000 | 1200 | FF FE 00 00 (4) | Unicode (UTF-32) | utf-32 | utf-32 | utf-32 |
Encoding.GetEncoding("UTF-32BE") | UTF32Encoding | 12001 | 1200 | 00 00 FE FF (4) | Unicode (UTF-32 ビッグ エンディアン) | utf-32BE | utf-32BE | utf-32BE |
Encoding.GetEncoding("UTF-32LE") | UTF32Encoding | 12000 | 1200 | FF FE 00 00 (4) | Unicode (UTF-32) | utf-32 | utf-32 | utf-32 |
Encoding.GetEncoding("UTF-7N") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-8N") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-16N") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-16BEN") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-16LEN") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-32N") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-32BEN") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UTF-32LEN") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UCS-1") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.GetEncoding("UCS-2") | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.GetEncoding("UCS-4") | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Encoding.Default | DBCSCodePageEncoding | 932 | 932 | (0) | 日本語 (シフト JIS) | iso-2022-jp | iso-2022-jp | shift_jis |
Encoding.UTF7 | UTF7Encoding | 65000 | 1200 | (0) | Unicode (UTF-7) | utf-7 | utf-7 | utf-7 |
Encoding.UTF8 | UTF8Encoding | 65001 | 1200 | EF BB BF (3) | Unicode (UTF-8) | utf-8 | utf-8 | utf-8 |
Encoding.Unicode | UnicodeEncoding | 1200 | 1200 | FF FE (2) | Unicode | utf-16 | utf-16 | utf-16 |
Encoding.BigEndianUnicode | UnicodeEncoding | 1201 | 1200 | FE FF (2) | Unicode (Big-Endian) | utf-16BE | utf-16BE | utf-16BE |
Encoding.UTF32 | UTF32Encoding | 12000 | 1200 | FF FE 00 00 (4) | Unicode (UTF-32) | utf-32 | utf-32 | utf-32 |
上記の表は改行点の制御のために見せるために、
- ZERO WIDTH SPACE (ゼロ幅スペース ​) ⇒ 改行の誘発
- WORD JOINER (単語結合子 ⁠) ⇒ 改行の禁止
- NO-BREAK SPACE (ノーブレークスペース  ) ⇒ pading
を一部使用しています。
(要約:コピペ注意)
検証サンプルコード
using System;
using System.Text;
public class Test {
public static void Main() {
Action<string, Func<Encoding>> act = delegate(string name, Func<Encoding> getEncoding) {
string encInfo = null;
try {
Encoding encoding = getEncoding();
encInfo = string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}", new Object[]{
encoding.GetType().Name,
encoding.CodePage,
encoding.WindowsCodePage,
new Func<string>(delegate () {
byte[] data = encoding.GetPreamble();
StringBuilder sb = new StringBuilder();
if(data == null) {
sb.Append("(null)");
} else {
sb.Append(BitConverter.ToString(data).Replace("-", " "));
sb.Append(" ");
sb.Append(string.Format("({0})", new object[]{data.Length}));
}
return sb.ToString();
})(),
encoding.EncodingName,
encoding.HeaderName,
encoding.BodyName,
encoding.WebName,
});
} catch(Exception e) {
encInfo = e.Message;
// encInfo = "*************************";
}
Console.WriteLine("{0} => {1}", new object[]{name, encInfo});
};
Action<int> acti = delegate(int cp) {
act(string.Format("Encoding.GetEncoding({0})", new object[]{cp}), delegate() {
return Encoding.GetEncoding(cp);
});
};
Action<string> acts = delegate(string name) {
act(string.Format("Encoding.GetEncoding(\"{0}\")", new object[]{name}), delegate() {
return Encoding.GetEncoding(name);
});
};
Action<string, Encoding> acte = delegate(string name, Encoding encoding) {
act(string.Format("{0}", new object[]{name}), delegate() {
return encoding;
});
};
Console.WriteLine(string.Format("OS: {0}", System.Environment.OSVersion.ToString()));
Console.WriteLine();
acti(1252);
acti(932);
acti(65001);
acts("s-jis");
acts("shift-jis");
acts("cp932");
acts("ms932");
acts("windows-31j");
acts("utf-7");
acts("utf-8");
acts("utf-16");
acts("utf-16be");
acts("utf-16le");
acts("utf-32");
acts("utf-32be");
acts("utf-32le");
acts("utf-7n");
acts("utf-8n");
acts("utf-16n");
acts("utf-16ben");
acts("utf-16len");
acts("utf-32n");
acts("utf-32ben");
acts("utf-32len");
acts("ucs-1");
acts("ucs-2");
acts("ucs-4");
acts("S-JIS");
acts("SHIFT-JIS");
acts("CP932");
acts("MS932");
acts("WINDOWS-31J");
acts("UTF-7");
acts("UTF-8");
acts("UTF-16");
acts("UTF-16BE");
acts("UTF-16LE");
acts("UTF-32");
acts("UTF-32BE");
acts("UTF-32LE");
acts("UTF-7N");
acts("UTF-8N");
acts("UTF-16N");
acts("UTF-16BEN");
acts("UTF-16LEN");
acts("UTF-32N");
acts("UTF-32BEN");
acts("UTF-32LEN");
acts("UCS-1");
acts("UCS-2");
acts("UCS-4");
acte("Encoding.Default", Encoding.Default);
acte("Encoding.UTF7", Encoding.UTF7);
acte("Encoding.UTF8", Encoding.UTF8);
acte("Encoding.Unicode", Encoding.Unicode);
acte("Encoding.BigEndianUnicode", Encoding.BigEndianUnicode);
acte("Encoding.UTF32", Encoding.UTF32);
}
}
OS: Microsoft Windows NT 6.2.9200.0
Encoding.GetEncoding(1252) => SBCSCodePageEncoding, 1252, 1252, (0), 西ヨーロッパ言語 (Windows), Windows-1252, iso-8859-1, Windows-1252
Encoding.GetEncoding(932) => DBCSCodePageEncoding, 932, 932, (0), 日本語 (シフト JIS), iso-2022-jp, iso-2022-jp, shift_jis
Encoding.GetEncoding(65001) => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.GetEncoding("s-jis") => 's-jis' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("shift-jis") => DBCSCodePageEncoding, 932, 932, (0), 日本語 (シフト JIS), iso-2022-jp, iso-2022-jp, shift_jis
Encoding.GetEncoding("cp932") => 'cp932' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("ms932") => 'ms932' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("windows-31j") => 'windows-31j' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-7") => UTF7Encoding, 65000, 1200, (0), Unicode (UTF-7), utf-7, utf-7, utf-7
Encoding.GetEncoding("utf-8") => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.GetEncoding("utf-16") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("utf-16be") => UnicodeEncoding, 1201, 1200, FE FF (2), Unicode (Big-Endian), utf-16BE, utf-16BE, utf-16BE
Encoding.GetEncoding("utf-16le") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("utf-32") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("utf-32be") => UTF32Encoding, 12001, 1200, 00 00 FE FF (4), Unicode (UTF-32 ビッグ エンディアン), utf-32BE, utf-32BE, utf-32BE
Encoding.GetEncoding("utf-32le") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("utf-7n") => 'utf-7n' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-8n") => 'utf-8n' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-16n") => 'utf-16n' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-16ben") => 'utf-16ben' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-16len") => 'utf-16len' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-32n") => 'utf-32n' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-32ben") => 'utf-32ben' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("utf-32len") => 'utf-32len' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("ucs-1") => 'ucs-1' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("ucs-2") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("ucs-4") => 'ucs-4' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("S-JIS") => 'S-JIS' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("SHIFT-JIS") => DBCSCodePageEncoding, 932, 932, (0), 日本語 (シフト JIS), iso-2022-jp, iso-2022-jp, shift_jis
Encoding.GetEncoding("CP932") => 'CP932' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("MS932") => 'MS932' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("WINDOWS-31J") => 'WINDOWS-31J' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-7") => UTF7Encoding, 65000, 1200, (0), Unicode (UTF-7), utf-7, utf-7, utf-7
Encoding.GetEncoding("UTF-8") => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.GetEncoding("UTF-16") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("UTF-16BE") => UnicodeEncoding, 1201, 1200, FE FF (2), Unicode (Big-Endian), utf-16BE, utf-16BE, utf-16BE
Encoding.GetEncoding("UTF-16LE") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("UTF-32") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("UTF-32BE") => UTF32Encoding, 12001, 1200, 00 00 FE FF (4), Unicode (UTF-32 ビッグ エンディアン), utf-32BE, utf-32BE, utf-32BE
Encoding.GetEncoding("UTF-32LE") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("UTF-7N") => 'UTF-7N' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-8N") => 'UTF-8N' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-16N") => 'UTF-16N' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-16BEN") => 'UTF-16BEN' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-16LEN") => 'UTF-16LEN' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-32N") => 'UTF-32N' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-32BEN") => 'UTF-32BEN' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UTF-32LEN") => 'UTF-32LEN' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UCS-1") => 'UCS-1' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
Encoding.GetEncoding("UCS-2") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("UCS-4") => 'UCS-4' はサポートされたエンコード名ではありません。カスタム エンコーディングの定義の詳細は、Encoding.RegisterProvider メソッドのドキュメントを参照してください。
パラメーター名:name
OS: Unix 4.9.0.12
Encoding.GetEncoding(1252) => CP1252, 1252, 1252, (0), Western European (Windows), Windows-1252, iso-8859-1, Windows-1252
Encoding.GetEncoding(932) => CP932, 932, 932, (0), Japanese (Shift-JIS), iso-2022-jp, iso-2022-jp, shift_jis
Encoding.GetEncoding(65001) => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.GetEncoding("s-jis") => 's-jis' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("shift-jis") => CP932, 932, 932, (0), Japanese (Shift-JIS), iso-2022-jp, iso-2022-jp, shift_jis
Encoding.GetEncoding("cp932") => 'cp932' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("ms932") => 'ms932' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("windows-31j") => 'windows-31j' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-7") => UTF7Encoding, 65000, 1200, (0), Unicode (UTF-7), utf-7, utf-7, utf-7
Encoding.GetEncoding("utf-8") => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.GetEncoding("utf-16") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("utf-16be") => UnicodeEncoding, 1201, 1200, FE FF (2), Unicode (Big-Endian), utf-16BE, utf-16BE, utf-16BE
Encoding.GetEncoding("utf-16le") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("utf-32") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("utf-32be") => UTF32Encoding, 12001, 1200, 00 00 FE FF (4), Unicode (UTF-32 Big-Endian), utf-32BE, utf-32BE, utf-32BE
Encoding.GetEncoding("utf-32le") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("utf-7n") => 'utf-7n' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-8n") => 'utf-8n' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-16n") => 'utf-16n' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-16ben") => 'utf-16ben' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-16len") => 'utf-16len' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-32n") => 'utf-32n' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-32ben") => 'utf-32ben' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("utf-32len") => 'utf-32len' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("ucs-1") => 'ucs-1' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("ucs-2") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("ucs-4") => 'ucs-4' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("S-JIS") => 'S-JIS' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("SHIFT-JIS") => CP932, 932, 932, (0), Japanese (Shift-JIS), iso-2022-jp, iso-2022-jp, shift_jis
Encoding.GetEncoding("CP932") => 'CP932' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("MS932") => 'MS932' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("WINDOWS-31J") => 'WINDOWS-31J' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-7") => UTF7Encoding, 65000, 1200, (0), Unicode (UTF-7), utf-7, utf-7, utf-7
Encoding.GetEncoding("UTF-8") => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.GetEncoding("UTF-16") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("UTF-16BE") => UnicodeEncoding, 1201, 1200, FE FF (2), Unicode (Big-Endian), utf-16BE, utf-16BE, utf-16BE
Encoding.GetEncoding("UTF-16LE") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("UTF-32") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("UTF-32BE") => UTF32Encoding, 12001, 1200, 00 00 FE FF (4), Unicode (UTF-32 Big-Endian), utf-32BE, utf-32BE, utf-32BE
Encoding.GetEncoding("UTF-32LE") => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
Encoding.GetEncoding("UTF-7N") => 'UTF-7N' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-8N") => 'UTF-8N' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-16N") => 'UTF-16N' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-16BEN") => 'UTF-16BEN' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-16LEN") => 'UTF-16LEN' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-32N") => 'UTF-32N' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-32BEN") => 'UTF-32BEN' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UTF-32LEN") => 'UTF-32LEN' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UCS-1") => 'UCS-1' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.GetEncoding("UCS-2") => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.GetEncoding("UCS-4") => 'UCS-4' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
Encoding.Default => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.UTF7 => UTF7Encoding, 65000, 1200, (0), Unicode (UTF-7), utf-7, utf-7, utf-7
Encoding.UTF8 => UTF8Encoding, 65001, 1200, EF BB BF (3), Unicode (UTF-8), utf-8, utf-8, utf-8
Encoding.Unicode => UnicodeEncoding, 1200, 1200, FF FE (2), Unicode, utf-16, utf-16, utf-16
Encoding.BigEndianUnicode => UnicodeEncoding, 1201, 1200, FE FF (2), Unicode (Big-Endian), utf-16BE, utf-16BE, utf-16BE
Encoding.UTF32 => UTF32Encoding, 12000, 1200, FF FE 00 00 (4), Unicode (UTF-32), utf-32, utf-32, utf-32
結論
一般的な表記が一応対応しており、大文字小文字も吸収してくれるので、コンソールが受け取った引き数をそのまま直接Encoding.GetEncoding()に渡しても良さそう。アプリ側で特にフィルタリングする場合、場合によってはパラメータを制限することになるので、フィルタリングする必要がなく丸投げできるのはありがたい。特に UTF-16LE
UTF-16BE
の表記は普通に使いたかったので。ただ、BOMの有無の吸収については悩みどころ。。。
余談
最近私がjavascriptナイズされており、無名関数まわりがあまりC#らしくない書き方になっています。
callback関数を関数の引数に取りたい、 即時実行関数を書きたい などの参考にもなるかもです。
また、ラムダ式
のありがたみを体感するために、あえて delegate
で記述しています。
ぶっちゃけjavascript同様、タイプ数が大幅に減るわけではなく、厳密な動作の違いや可読性面の方が気になる感じです。個人的には予約語があることで関数である自己主張の高い delegate
も結構良いと感じております。
尚、三項演算子
型推論
は 宗教上の理由 で使えません。
参考
-
Encoding.GetEncoding メソッド (System.Text) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.encoding.getencoding?view=netframework-4.5 -
Encoding.WebName プロパティ (System.Text) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.encoding.webname?view=netframework-4.5#System_Text_Encoding_WebName -
EncodingInfo.GetEncoding メソッド (System.Text) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.encodinginfo.getencoding?view=netframework-4.5 -
ISO/IEC 10646#文字符号化方式 - Wikipedia
https://ja.wikipedia.org/wiki/ISO/IEC_10646#%E6%96%87%E5%AD%97%E7%AC%A6%E5%8F%B7%E5%8C%96%E6%96%B9%E5%BC%8F