Khá đơn giản: NET 1.1 là " cố định ": nó sẽ không thay đổi. Bạn lấy Encodings of 2.0 và kiểm tra nếu chúng đã có mặt trong 1.1. Ví dụ:
string[] encs = new string[] {
"IBM037", "IBM437", "IBM500", "ASMO-708", "DOS-720", "ibm737",
"ibm775", "ibm850", "ibm852", "IBM855", "ibm857", "IBM00858",
"IBM860", "ibm861", "DOS-862", "IBM863", "IBM864", "IBM865",
"cp866", "ibm869", "IBM870", "windows-874", "cp875",
"shift_jis", "gb2312", "ks_c_5601-1987", "big5", "IBM1026",
"IBM01047", "IBM01140", "IBM01141", "IBM01142", "IBM01143",
"IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148",
"IBM01149", "utf-16", "utf-16BE", "windows-1250",
"windows-1251", "Windows-1252", "windows-1253", "windows-1254",
"windows-1255", "windows-1256", "windows-1257", "windows-1258",
"Johab", "macintosh", "x-mac-japanese", "x-mac-chinesetrad",
"x-mac-korean", "x-mac-arabic", "x-mac-hebrew", "x-mac-greek",
"x-mac-cyrillic", "x-mac-chinesesimp", "x-mac-romanian",
"x-mac-ukrainian", "x-mac-thai", "x-mac-ce", "x-mac-icelandic",
"x-mac-turkish", "x-mac-croatian", "utf-32", "utf-32BE",
"x-Chinese-CNS", "x-cp20001", "x-Chinese-Eten", "x-cp20003",
"x-cp20004", "x-cp20005", "x-IA5", "x-IA5-German",
"x-IA5-Swedish", "x-IA5-Norwegian", "us-ascii", "x-cp20261",
"x-cp20269", "IBM273", "IBM277", "IBM278", "IBM280", "IBM284",
"IBM285", "IBM290", "IBM297", "IBM420", "IBM423", "IBM424",
"x-EBCDIC-KoreanExtended", "IBM-Thai", "koi8-r", "IBM871",
"IBM880", "IBM905", "IBM00924", "EUC-JP", "x-cp20936",
"x-cp20949", "cp1025", "koi8-u", "iso-8859-1", "iso-8859-2",
"iso-8859-3", "iso-8859-4", "iso-8859-5", "iso-8859-6",
"iso-8859-7", "iso-8859-8", "iso-8859-9", "iso-8859-13",
"iso-8859-15", "x-Europa", "iso-8859-8-i", "iso-2022-jp",
"csISO2022JP", "iso-2022-jp", "iso-2022-kr", "x-cp50227",
"euc-jp", "EUC-CN", "euc-kr", "hz-gb-2312", "GB18030",
"x-iscii-de", "x-iscii-be", "x-iscii-ta", "x-iscii-te",
"x-iscii-as", "x-iscii-or", "x-iscii-ka", "x-iscii-ma",
"x-iscii-gu", "x-iscii-pa", "utf-7", "utf-8"
};
và
foreach (string enc in encs)
{
try {
Encoding.GetEncoding(enc);
} catch {
Console.WriteLine("Missing {0}", enc);
}
}
(vâng, đó là danh sách đầy đủ của mã hóa trình bày trong .NET 4.0 ... Nếu bạn cần chúng về giá trị "số", nó sẽ là khá dễ dàng để làm điều đó). Sau đó, bạn lấy những cái không hoạt động và lấy chúng ra khỏi danh sách đó.
Để tạo ra chúng (tối thiểu .NET 2.0 và C# 3.0):
var encs = Encoding.GetEncodings().Select(p => p.Name);
//var encs = Encoding.GetEncodings().Select(p => p.CodePage);
var sb = new StringBuilder("var encs = new[] {");
foreach (var enc in encs) {
sb.Append(" \"" + enc + "\",");
//sb.Append(" " + enc + ",");
}
sb.Length--;
sb.Append(" };");
var str = sb.ToString();
Console.WriteLine(str);
Nâng cấp lên .NET 2.0? – dtb
@dtb Bạn có phải là một trong những người đăng bài "Sử dụng Java" khi ai đó đăng câu hỏi .Net không? ;-) – Justin
@dtb: Cuộc sống của tôi sẽ hạnh phúc hơn nhiều, nhưng tôi không thể –