Наследование: EncodingNLS, ISerializable
 internal unsafe static int GetCodePageByteSize(int codePage)
 {
     BaseCodePageEncoding.CodePageHeader *ptr = BaseCodePageEncoding.FindCodePage(codePage);
     if (ptr == null)
     {
         return(0);
     }
     return((int)ptr->ByteCount);
 }
Пример #2
0
 internal static unsafe int GetCodePageByteSize(int codePage)
 {
     BaseCodePageEncoding.CodePageHeader *codePage1 = BaseCodePageEncoding.FindCodePage(codePage);
     if ((IntPtr)codePage1 == IntPtr.Zero)
     {
         return(0);
     }
     return((int)codePage1->ByteCount);
 }
Пример #3
0
 private unsafe void LoadCodePageTables()
 {
     BaseCodePageEncoding.CodePageHeader *codePage = BaseCodePageEncoding.FindCodePage(this.dataTableCodePage);
     if ((IntPtr)codePage == IntPtr.Zero)
     {
         throw new NotSupportedException(Environment.GetResourceString("NotSupported_NoCodepageData", (object)this.CodePage));
     }
     this.pCodePage = codePage;
     this.LoadManagedCodePage();
 }
 private unsafe void LoadCodePageTables()
 {
     BaseCodePageEncoding.CodePageHeader *ptr = BaseCodePageEncoding.FindCodePage(this.dataTableCodePage);
     if (ptr == null)
     {
         throw new NotSupportedException(Environment.GetResourceString("NotSupported_NoCodepageData", new object[]
         {
             this.CodePage
         }));
     }
     this.pCodePage = ptr;
     this.LoadManagedCodePage();
 }
 internal InternalDecoderBestFitFallback(BaseCodePageEncoding _encoding)
 {
     // Need to load our replacement characters table.
     encoding = _encoding;
 }
Пример #6
0
        public override Encoding GetEncoding(int codepage)
        {
            if (codepage < 0 || codepage > 65535)
            {
                return(null);
            }

            if (codepage == 0)
            {
                // Retrieve the system default non-unicode code page if possible, or return null,
                // giving the rest of the EncodingProviders a chance to return a default.
                int systemDefaultCodePage = SystemDefaultCodePage;
                return(systemDefaultCodePage != 0 ?
                       GetEncoding(systemDefaultCodePage) :
                       null);
            }

            Encoding result = null;

            _cacheLock.EnterUpgradeableReadLock();
            try
            {
                if (_encodings.TryGetValue(codepage, out result))
                {
                    return(result);
                }

                int i = BaseCodePageEncoding.GetCodePageByteSize(codepage);

                if (i == 1)
                {
                    result = new SBCSCodePageEncoding(codepage);
                }
                else if (i == 2)
                {
                    result = new DBCSCodePageEncoding(codepage);
                }
                else
                {
                    result = GetEncodingRare(codepage);
                    if (result == null)
                    {
                        return(null);
                    }
                }

                _cacheLock.EnterWriteLock();
                try
                {
                    Encoding cachedEncoding;
                    if (_encodings.TryGetValue(codepage, out cachedEncoding))
                    {
                        return(cachedEncoding);
                    }

                    _encodings.Add(codepage, result);
                }
                finally
                {
                    _cacheLock.ExitWriteLock();
                }
            }
            finally
            {
                _cacheLock.ExitUpgradeableReadLock();
            }

            return(result);
        }
Пример #7
0
 internal InternalDecoderBestFitFallback(BaseCodePageEncoding _encoding)
 {
     // Need to load our replacement characters table.
     encoding = _encoding;
 }
Пример #8
0
 public override System.Collections.Generic.IEnumerable <System.Text.EncodingInfo> GetEncodings() => BaseCodePageEncoding.GetEncodings(this);