是否将每个代码页实现为.NET中System.Text.Encoding的子类

时间:2010-09-20 23:20:27

标签: c# .net

在这里我很简单,您能否确认每个代码页是否作为.NET 2.0中System.Text.Encoding的独立子类实现?

3 个答案:

答案 0 :(得分:2)

我不确定我是否了解您问题的背景,但是,Encoding.UTF8Encoding.UTF16以及从Encoding.GetEncoding()返回的任何内容都来自System.Text.Encoding。它不能是任何其他方式,因为Encoding.GetEncoding() 返回 Encoding实例,这意味着 所做的唯一事情就是返回一个子类。

答案 1 :(得分:1)

通过Reflector查看,只有少数几个类是System.Text.Encoding的子类。

公开:

  • System.Text.ASCIIEncoding
  • System.Text.UnicodeEncoding
  • System.Text.UTF32Encoding
  • System.Text.UTF7Encoding
  • System.Text.UTF8Encoding

内部:

  • System.Text.Base64Encoding
  • System.Text.BinHexEncoding
  • System.Text.EncodingNLS
  • System.Xml.Ucs4Encoding

GetEncoding()方法使用其中每个的变体来回馈其他数百个支持的代码页。

答案 2 :(得分:1)

没有。 .NET框架(下面列出)本身支持某些编码,这些编码有自己的子类。任何其他代码页都存储为GetEncoding() [1]返回的对象的属性,并且由底层操作系统提供支持。

本机(对.NET Framework)编码为:

  • ASCIIEncoding
  • UTF7Encoding
  • UTF8Encoding
  • UnicodeEncoding(使用UTF-16)
  • UTF32Encoding

(来自http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx的信息)

1:对于非本机代码页,这可能是Encoding的子类,但我没有检查过。下面链接的文档似乎表明使用了Encoding的实例。