using System; using System.Text; namespace ZeroLevel.Services.Extensions { public class EncodingEx : Encoding { private readonly Encoding _baseEncoding; public override string BodyName { get { if (_baseEncoding.CodePage == 1251) return _baseEncoding.HeaderName; return _baseEncoding.BodyName; } } public EncodingEx(string name) : this(Encoding.GetEncoding(name)) { } public EncodingEx(Encoding baseEncoding) : base(baseEncoding.CodePage) { if (baseEncoding == null) throw new ArgumentNullException("baseEncoding"); _baseEncoding = baseEncoding; } public override int GetByteCount(char[] chars, int index, int count) { return _baseEncoding.GetByteCount(chars, index, count); } public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex) { return _baseEncoding.GetBytes(chars, charIndex, charCount, bytes, byteIndex); } public override int GetCharCount(byte[] bytes, int index, int count) { return _baseEncoding.GetCharCount(bytes, index, count); } public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex) { return _baseEncoding.GetChars(bytes, byteIndex, byteCount, chars, charIndex); } public override int GetMaxByteCount(int charCount) { return _baseEncoding.GetMaxByteCount(charCount); } public override int GetMaxCharCount(int byteCount) { return _baseEncoding.GetMaxCharCount(byteCount); } } }