[Serializable]
public abstract class Encoding : ICloneable
{
private static volatile Encoding defaultEncoding;
private static volatile Encoding unicodeEncoding;
private static volatile Encoding bigEndianUnicode;
#if FEATURE_UTF7
private static volatile Encoding utf7Encoding;
#endif
private static volatile Encoding utf8Encoding;
#if FEATURE_UTF32
private static volatile Encoding utf32Encoding;
#endif
#if FEATURE_ASCII
private static volatile Encoding asciiEncoding;
#endif
protected Encoding()
: this(0)
{
}
[Pure]
public static Encoding GetEncoding(String name)
{
Encoding baseEncoding = EncodingProvider.GetEncodingFromProvider(name);
if (baseEncoding != null)
return baseEncoding;
return (GetEncoding(EncodingTable.GetCodePageFromName(name)));
}
public virtual String EncodingName
{
get
{
return (Environment.GetResourceString("Globalization.cp_" + m_codePage));
}
}
#if FEATURE_ASCII
public static Encoding ASCII
{
get
{
if (asciiEncoding == null) asciiEncoding = new ASCIIEncoding();
return asciiEncoding;
}
}
#endif
[Pure]
public virtual byte[] GetBytes(char[] chars)
{
if (chars == null)
{
throw new ArgumentNullException("chars",
Environment.GetResourceString("ArgumentNull_Array"));
}
Contract.EndContractBlock();
return GetBytes(chars, 0, chars.Length);
}
[Pure]
public virtual byte[] GetBytes(char[] chars, int index, int count)
{
byte[] result = new byte[GetByteCount(chars, index, count)];
GetBytes(chars, index, count, result, 0);
return result;
}
[Pure]
public virtual char[] GetChars(byte[] bytes)
{
if (bytes == null)
{
throw new ArgumentNullException("bytes",
Environment.GetResourceString("ArgumentNull_Array"));
}
Contract.EndContractBlock();
return GetChars(bytes, 0, bytes.Length);
}
[Pure]
public virtual char[] GetChars(byte[] bytes, int index, int count)
{
char[] result = new char[GetCharCount(bytes, index, count)];
GetChars(bytes, index, count, result, 0);
return result;
}
[System.Security.SecurityCritical] // auto-generated
[CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public unsafe string GetString(byte* bytes, int byteCount)
{
if (bytes == null)
throw new ArgumentNullException("bytes", Environment.GetResourceString("ArgumentNull_Array"));
if (byteCount < 0)
throw new ArgumentOutOfRangeException("byteCount", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
Contract.EndContractBlock();
return String.CreateStringFromEncoding(bytes, byteCount, this);
}
public static Encoding Default
{
[System.Security.SecuritySafeCritical] // auto-generated
get
{
if (defaultEncoding == null)
{
defaultEncoding = CreateDefaultEncoding();
}
return defaultEncoding;
}
}
[Pure]
public virtual String GetString(byte[] bytes)
{
if (bytes == null)
throw new ArgumentNullException("bytes",
Environment.GetResourceString("ArgumentNull_Array"));
Contract.EndContractBlock();
return GetString(bytes, 0, bytes.Length);
}
[Pure]
public virtual String GetString(byte[] bytes, int index, int count)
{
return new String(GetChars(bytes, index, count));
}
public static Encoding Unicode
{
get
{
if (unicodeEncoding == null) unicodeEncoding = new UnicodeEncoding(false, true);
return unicodeEncoding;
}
}
public static Encoding BigEndianUnicode
{
get
{
if (bigEndianUnicode == null) bigEndianUnicode = new UnicodeEncoding(true, true);
return bigEndianUnicode;
}
}
#if FEATURE_UTF7
public static Encoding UTF7 {
get {
if (utf7Encoding == null) utf7Encoding = new UTF7Encoding();
return utf7Encoding;
}
}
#endif
public static Encoding UTF8
{
get
{
if (utf8Encoding == null) utf8Encoding = new UTF8Encoding(true);
return utf8Encoding;
}
}
#if FEATURE_UTF32
public static Encoding UTF32 {
get {
if (utf32Encoding == null) utf32Encoding = new UTF32Encoding(false, true);
return utf32Encoding;
}
}
#endif
}