Beispiel #1
0
        public static void VerifyEncoding(Encoding encoding, int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
        {
            if (encoderFallback == null)
            {
                Assert.NotNull(encoding.EncoderFallback);
                Assert.Equal(codePage, encoding.EncoderFallback.GetHashCode());
            }
            else
            {
                Assert.Same(encoderFallback, encoding.EncoderFallback);
            }

            if (decoderFallback == null)
            {
                Assert.NotNull(encoding.DecoderFallback);
                Assert.Equal(codePage, encoding.DecoderFallback.GetHashCode());
            }
            else
            {
                Assert.Same(decoderFallback, encoding.DecoderFallback);
            }

            Assert.Empty(encoding.GetPreamble());
            Assert.False(encoding.IsSingleByte);
        }
        protected override int GetChars(ReadOnlySpan <byte> bytes, Span <char> chars, bool write)
        {
            if (bytes.IsEmpty)
            {
                return(0);
            }

            if (bytes.Length % 2 != 0)
            {
                DecoderFallback.CreateFallbackBuffer().Fallback(
                    bytes.Slice(bytes.Length - 1).ToArray(),
                    bytes.Length - 1);

                Debug.Fail("Fallback should have thrown");
                throw new InvalidOperationException();
            }

            int writeIdx = 0;

            for (int i = 0; i < bytes.Length; i += 2)
            {
                char c = (char)BinaryPrimitives.ReadInt16BigEndian(bytes.Slice(i));

                if (char.IsSurrogate(c))
                {
                    DecoderFallback.CreateFallbackBuffer().Fallback(
                        bytes.Slice(i, 2).ToArray(),
                        i);

                    Debug.Fail("Fallback should have thrown");
                    throw new InvalidOperationException();
                }

                if (write)
                {
                    chars[writeIdx] = c;
                }

                writeIdx++;
            }

            return(writeIdx);
        }
Beispiel #3
0
private int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex, DecoderFallbackBuffer dfb)
{
    int byteEnd     = byteIndex + byteCount;
    int outputChars = 0;

    while (byteIndex < byteEnd)
    {
        byte b = bytes[byteIndex];
#if FEATURE_ENCODING
        if (b > 0x7f)
        {
            if (dfb == null)
            {
                dfb = DecoderFallback.CreateFallbackBuffer();
            }
            try {
                if (dfb.Fallback(new[] { b }, byteIndex))
                {
                    while (dfb.Remaining != 0)
                    {
                        chars[charIndex++] = dfb.GetNextChar();
                        outputChars++;
                    }
                }
            } catch (DecoderFallbackException ex) {
                var dfe = new DecoderFallbackException("ordinal not in range(128)", ex.BytesUnknown, ex.Index);
                dfe.Data.Add("encoding", EncodingName);
                throw dfe;
            }
        }
        else
        {
            chars[charIndex++] = (char)b;
            outputChars++;
        }
#else
        chars[charIndex++] = (char)b;
        outputChars++;
#endif
        byteIndex++;
    }
    return(outputChars);
}
Beispiel #4
0
    private int GetCharCount(byte[] bytes, int index, int count, DecoderFallbackBuffer dfb)
    {
        int byteEnd     = index + count;
        int outputChars = 0;

        while (index < byteEnd)
        {
            byte b = bytes[index];
#if FEATURE_ENCODING
            if (b > 0x7f)
            {
                if (dfb == null)
                {
                    dfb = DecoderFallback.CreateFallbackBuffer();
                }
                try {
                    if (dfb.Fallback(new[] { b }, index))
                    {
                        outputChars += dfb.Remaining;
                        while (dfb.GetNextChar() != char.MinValue) /* empty */ } {
                }
            } catch (DecoderFallbackException ex) {
                var dfe = new DecoderFallbackException("ordinal not in range(128)", ex.BytesUnknown, ex.Index);
                dfe.Data.Add("encoding", EncodingName);
                throw dfe;
            }
        }
        else
        {
            outputChars++;
        }
#else
            outputChars++;
#endif
        index++;
    }
    return(outputChars);
}
Beispiel #5
0
        public static bool ReadAllTextAutoDetect(string path, out StringWithCodePage?guessed)
        {
            string[] encodingNames = new string[] {
                "utf-8",
                "shift_jis",
                "ks_c_5601-1987",
                "utf-16",
                "unicodeFFFE",
            };
            EncoderFallback efall = EncoderFallback.ExceptionFallback;
            DecoderFallback dfall = DecoderFallback.ExceptionFallback;

            foreach (string name in encodingNames)
            {
                try {
                    var enc = Encoding.GetEncoding(name, efall, dfall);
                    guessed = new StringWithCodePage(File.ReadAllText(path, enc), enc);
                    return(true);
                }
                catch (DecoderFallbackException) { }
            }
            guessed = null;
            return(false);
        }
Beispiel #6
0
        public override int GetCharCount(byte[] bytes, int index, int count)
        {
            int byteEnd     = index + count;
            int outputChars = 0;

            while (index < byteEnd)
            {
                byte b = bytes[index];
                if (b > 0x7f)
                {
                    DecoderFallbackBuffer dfb = DecoderFallback.CreateFallbackBuffer();
                    if (dfb.Fallback(new byte[] { b }, index))
                    {
                        outputChars += dfb.Remaining;
                    }
                }
                else
                {
                    outputChars++;
                }
                index++;
            }
            return(outputChars);
        }
Beispiel #7
0
        public override int GetCharCount(byte[] bytes, int index, int count)
        {
            int byteEnd     = index + count;
            int outputChars = 0;

            while (index < byteEnd)
            {
                byte b = bytes[index];

                object val;
                object byteObj = ScriptingRuntimeHelpers.Int32ToObject((int)b);

                if (!_map.TryGetValue(byteObj, out val) || val == null)
                {
                    DecoderFallbackBuffer dfb = DecoderFallback.CreateFallbackBuffer();
                    if (dfb.Fallback(new[] { b }, 0))
                    {
                        outputChars += dfb.Remaining;
                    }
                }
                else if (val is string)
                {
                    outputChars += ((string)val).Length;
                }
                else if (val is int)
                {
                    outputChars++;
                }
                else
                {
                    throw PythonOps.TypeError("charmap must be an int, str, or None");
                }
                index++;
            }
            return(outputChars);
        }
Beispiel #8
0
 public override Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 => _staticInstance?.GetEncoding(codepage, encoderFallback, decoderFallback);
Beispiel #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EucJpEncoding"/> class.
 /// </summary>
 /// <param name="decFallback">Decoder fallback.</param>
 /// <param name="encFallback">Encoder fallback.</param>
 public EucJpEncoding(DecoderFallback decFallback, EncoderFallback encFallback)
 {
     DecoderFallback = decFallback ?? throw new ArgumentNullException(nameof(decFallback));
     EncoderFallback = encFallback ?? throw new ArgumentNullException(nameof(encFallback));
 }
 private static void VerifyEncoding(Encoding encoding, int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 {
     if (encoderFallback is null && encoding.IsLatin1())
     {
         Assert.True(encoding.EncoderFallback.IsLatin1BestFitFallback());
     }
Beispiel #11
0
 public CustomDecoderFallback(int buffer_length, DecoderFallback parent_decoder_fallback)
 {
     _bufferLength = buffer_length;
     _parent       = parent_decoder_fallback;
 }
 public static Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
 public virtual Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
 public static Windows1250Encoding Create(EncoderFallback encoder, DecoderFallback decoder)
 {
     return new Windows1250Encoding(encoder, decoder);
 }
Beispiel #15
0
 public static Encoding GetEncoding(int encodingName, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 {
     return(Encoding.GetEncoding(encodingName, encoderFallback, decoderFallback));
 }
 public FallbackDetector(DecoderFallback decoderFallback)
 {
     this.decoderFallback = decoderFallback;
 }
Beispiel #17
0
 public void Ctor_Int_EncoderFallback_DecoderFallback(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 {
     CustomEncoding encoding = new CustomEncoding(codePage, encoderFallback, decoderFallback);
     VerifyEncoding(encoding, codePage, encoderFallback, decoderFallback);
 }
 /// <inheritdoc />
 public IEncoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 {
     return(Encoding.GetEncoding(name, encoderFallback, decoderFallback).ToInterface());
 }
 /// <inheritdoc />
 public IEncoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 {
     return(Encoding.GetEncoding(codepage, encoderFallback, decoderFallback).ToInterface());
 }
Beispiel #20
0
 public CustomEncoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback) : base(codePage, encoderFallback, decoderFallback) { }
        public Windows1250Encoding(EncoderFallback encoderFallback, DecoderFallback decoderFallback)
            : base(1250, "Central and Eastern Europe (Windows)", "windows-1250", encoderFallback, decoderFallback)
        {
            byteToChars_ = new char[]
            {
                          '\u0000' // ''
                        , '\u0001' // ''
                        , '\u0002' // ''
                        , '\u0003' // ''
                        , '\u0004' // ''
                        , '\u0005' // ''
                        , '\u0006' // ''
                        , '\u0007' // ''
                        , '\u0008' // ''
                        , '\u0009' // '<TAB>'
                        , '\u000a' // '<LF>'
                        , '\u000b' // ''
                        , '\u000c' // ''
                        , '\u000d' // '<CR>'
                        , '\u000e' // ''
                        , '\u000f' // ''
                        , '\u0010' // ''
                        , '\u0011' // ''
                        , '\u0012' // ''
                        , '\u0013' // ''
                        , '\u0014' // ''
                        , '\u0015' // ''
                        , '\u0016' // ''
                        , '\u0017' // ''
                        , '\u0018' // ''
                        , '\u0019' // ''
                        , '\u001a' // ''
                        , '\u001b' // ''
                        , '\u001c' // ''
                        , '\u001d' // ''
                        , '\u001e' // ''
                        , '\u001f' // ''
                        , '\u0020' // ' '
                        , '\u0021' // '!'
                        , '\u0022' // '"'
                        , '\u0023' // '#'
                        , '\u0024' // '$'
                        , '\u0025' // '%'
                        , '\u0026' // '&'
                        , '\u0027' // '''
                        , '\u0028' // '('
                        , '\u0029' // ')'
                        , '\u002a' // '*'
                        , '\u002b' // '+'
                        , '\u002c' // ','
                        , '\u002d' // '-'
                        , '\u002e' // '.'
                        , '\u002f' // '/'
                        , '\u0030' // '0'
                        , '\u0031' // '1'
                        , '\u0032' // '2'
                        , '\u0033' // '3'
                        , '\u0034' // '4'
                        , '\u0035' // '5'
                        , '\u0036' // '6'
                        , '\u0037' // '7'
                        , '\u0038' // '8'
                        , '\u0039' // '9'
                        , '\u003a' // ':'
                        , '\u003b' // ';'
                        , '\u003c' // '<'
                        , '\u003d' // '='
                        , '\u003e' // '>'
                        , '\u003f' // '?'
                        , '\u0040' // '@'
                        , '\u0041' // 'A'
                        , '\u0042' // 'B'
                        , '\u0043' // 'C'
                        , '\u0044' // 'D'
                        , '\u0045' // 'E'
                        , '\u0046' // 'F'
                        , '\u0047' // 'G'
                        , '\u0048' // 'H'
                        , '\u0049' // 'I'
                        , '\u004a' // 'J'
                        , '\u004b' // 'K'
                        , '\u004c' // 'L'
                        , '\u004d' // 'M'
                        , '\u004e' // 'N'
                        , '\u004f' // 'O'
                        , '\u0050' // 'P'
                        , '\u0051' // 'Q'
                        , '\u0052' // 'R'
                        , '\u0053' // 'S'
                        , '\u0054' // 'T'
                        , '\u0055' // 'U'
                        , '\u0056' // 'V'
                        , '\u0057' // 'W'
                        , '\u0058' // 'X'
                        , '\u0059' // 'Y'
                        , '\u005a' // 'Z'
                        , '\u005b' // '['
                        , '\u005c' // '\'
                        , '\u005d' // ']'
                        , '\u005e' // '^'
                        , '\u005f' // '_'
                        , '\u0060' // '`'
                        , '\u0061' // 'a'
                        , '\u0062' // 'b'
                        , '\u0063' // 'c'
                        , '\u0064' // 'd'
                        , '\u0065' // 'e'
                        , '\u0066' // 'f'
                        , '\u0067' // 'g'
                        , '\u0068' // 'h'
                        , '\u0069' // 'i'
                        , '\u006a' // 'j'
                        , '\u006b' // 'k'
                        , '\u006c' // 'l'
                        , '\u006d' // 'm'
                        , '\u006e' // 'n'
                        , '\u006f' // 'o'
                        , '\u0070' // 'p'
                        , '\u0071' // 'q'
                        , '\u0072' // 'r'
                        , '\u0073' // 's'
                        , '\u0074' // 't'
                        , '\u0075' // 'u'
                        , '\u0076' // 'v'
                        , '\u0077' // 'w'
                        , '\u0078' // 'x'
                        , '\u0079' // 'y'
                        , '\u007a' // 'z'
                        , '\u007b' // '{'
                        , '\u007c' // '|'
                        , '\u007d' // '}'
                        , '\u007e' // '~'
                        , '\u007f' // ''
                        , '\u20ac' // '€'
                        , '\u0081' // ''
                        , '\u201a' // '‚'
                        , '\u0083' // 'ƒ'
                        , '\u201e' // '„'
                        , '\u2026' // '…'
                        , '\u2020' // '†'
                        , '\u2021' // '‡'
                        , '\u0088' // 'ˆ'
                        , '\u2030' // '‰'
                        , '\u0160' // 'Š'
                        , '\u2039' // '‹'
                        , '\u015a' // 'Ś'
                        , '\u0164' // 'Ť'
                        , '\u017d' // 'Ž'
                        , '\u0179' // 'Ź'
                        , '\u0090' // ''
                        , '\u2018' // '‘'
                        , '\u2019' // '’'
                        , '\u201c' // '“'
                        , '\u201d' // '”'
                        , '\u2022' // '•'
                        , '\u2013' // '–'
                        , '\u2014' // '—'
                        , '\u0098' // '˜'
                        , '\u2122' // '™'
                        , '\u0161' // 'š'
                        , '\u203a' // '›'
                        , '\u015b' // 'ś'
                        , '\u0165' // 'ť'
                        , '\u017e' // 'ž'
                        , '\u017a' // 'ź'
                        , '\u00a0' // ' '
                        , '\u02c7' // 'ˇ'
                        , '\u02d8' // '˘'
                        , '\u0141' // 'Ł'
                        , '\u00a4' // '¤'
                        , '\u0104' // 'Ą'
                        , '\u00a6' // '¦'
                        , '\u00a7' // '§'
                        , '\u00a8' // '¨'
                        , '\u00a9' // '©'
                        , '\u015e' // 'Ş'
                        , '\u00ab' // '«'
                        , '\u00ac' // '¬'
                        , '\u00ad' // '­'
                        , '\u00ae' // '®'
                        , '\u017b' // 'Ż'
                        , '\u00b0' // '°'
                        , '\u00b1' // '±'
                        , '\u02db' // '˛'
                        , '\u0142' // 'ł'
                        , '\u00b4' // '´'
                        , '\u00b5' // 'µ'
                        , '\u00b6' // '¶'
                        , '\u00b7' // '·'
                        , '\u00b8' // '¸'
                        , '\u0105' // 'ą'
                        , '\u015f' // 'ş'
                        , '\u00bb' // '»'
                        , '\u013d' // 'Ľ'
                        , '\u02dd' // '˝'
                        , '\u013e' // 'ľ'
                        , '\u017c' // 'ż'
                        , '\u0154' // 'Ŕ'
                        , '\u00c1' // 'Á'
                        , '\u00c2' // 'Â'
                        , '\u0102' // 'Ă'
                        , '\u00c4' // 'Ä'
                        , '\u0139' // 'Ĺ'
                        , '\u0106' // 'Ć'
                        , '\u00c7' // 'Ç'
                        , '\u010c' // 'Č'
                        , '\u00c9' // 'É'
                        , '\u0118' // 'Ę'
                        , '\u00cb' // 'Ë'
                        , '\u011a' // 'Ě'
                        , '\u00cd' // 'Í'
                        , '\u00ce' // 'Î'
                        , '\u010e' // 'Ď'
                        , '\u0110' // 'Đ'
                        , '\u0143' // 'Ń'
                        , '\u0147' // 'Ň'
                        , '\u00d3' // 'Ó'
                        , '\u00d4' // 'Ô'
                        , '\u0150' // 'Ő'
                        , '\u00d6' // 'Ö'
                        , '\u00d7' // '×'
                        , '\u0158' // 'Ř'
                        , '\u016e' // 'Ů'
                        , '\u00da' // 'Ú'
                        , '\u0170' // 'Ű'
                        , '\u00dc' // 'Ü'
                        , '\u00dd' // 'Ý'
                        , '\u0162' // 'Ţ'
                        , '\u00df' // 'ß'
                        , '\u0155' // 'ŕ'
                        , '\u00e1' // 'á'
                        , '\u00e2' // 'â'
                        , '\u0103' // 'ă'
                        , '\u00e4' // 'ä'
                        , '\u013a' // 'ĺ'
                        , '\u0107' // 'ć'
                        , '\u00e7' // 'ç'
                        , '\u010d' // 'č'
                        , '\u00e9' // 'é'
                        , '\u0119' // 'ę'
                        , '\u00eb' // 'ë'
                        , '\u011b' // 'ě'
                        , '\u00ed' // 'í'
                        , '\u00ee' // 'î'
                        , '\u010f' // 'ď'
                        , '\u0111' // 'đ'
                        , '\u0144' // 'ń'
                        , '\u0148' // 'ň'
                        , '\u00f3' // 'ó'
                        , '\u00f4' // 'ô'
                        , '\u0151' // 'ő'
                        , '\u00f6' // 'ö'
                        , '\u00f7' // '÷'
                        , '\u0159' // 'ř'
                        , '\u016f' // 'ů'
                        , '\u00fa' // 'ú'
                        , '\u0171' // 'ű'
                        , '\u00fc' // 'ü'
                        , '\u00fd' // 'ý'
                        , '\u0163' // 'ţ'
                        , '\u02d9' // '˙'
                };

            charToBytes_ = new Dictionary<char, byte>()
            {
                        { /* '€' */ '\u20ac', 128 },
                        { /* '‚' */ '\u201a', 130 },
                        { /* '„' */ '\u201e', 132 },
                        { /* '…' */ '\u2026', 133 },
                        { /* '†' */ '\u2020', 134 },
                        { /* '‡' */ '\u2021', 135 },
                        { /* '‰' */ '\u2030', 137 },
                        { /* 'Š' */ '\u0160', 138 },
                        { /* '‹' */ '\u2039', 139 },
                        { /* 'Ś' */ '\u015a', 140 },
                        { /* 'Ť' */ '\u0164', 141 },
                        { /* 'Ž' */ '\u017d', 142 },
                        { /* 'Ź' */ '\u0179', 143 },
                        { /* '‘' */ '\u2018', 145 },
                        { /* '’' */ '\u2019', 146 },
                        { /* '“' */ '\u201c', 147 },
                        { /* '”' */ '\u201d', 148 },
                        { /* '•' */ '\u2022', 149 },
                        { /* '–' */ '\u2013', 150 },
                        { /* '—' */ '\u2014', 151 },
                        { /* '™' */ '\u2122', 153 },
                        { /* 'š' */ '\u0161', 154 },
                        { /* '›' */ '\u203a', 155 },
                        { /* 'ś' */ '\u015b', 156 },
                        { /* 'ť' */ '\u0165', 157 },
                        { /* 'ž' */ '\u017e', 158 },
                        { /* 'ź' */ '\u017a', 159 },
                        { /* 'ˇ' */ '\u02c7', 161 },
                        { /* '˘' */ '\u02d8', 162 },
                        { /* 'Ł' */ '\u0141', 163 },
                        { /* 'Ą' */ '\u0104', 165 },
                        { /* 'Ş' */ '\u015e', 170 },
                        { /* 'Ż' */ '\u017b', 175 },
                        { /* '˛' */ '\u02db', 178 },
                        { /* 'ł' */ '\u0142', 179 },
                        { /* 'ą' */ '\u0105', 185 },
                        { /* 'ş' */ '\u015f', 186 },
                        { /* 'Ľ' */ '\u013d', 188 },
                        { /* '˝' */ '\u02dd', 189 },
                        { /* 'ľ' */ '\u013e', 190 },
                        { /* 'ż' */ '\u017c', 191 },
                        { /* 'Ŕ' */ '\u0154', 192 },
                        { /* 'Ă' */ '\u0102', 195 },
                        { /* 'Ĺ' */ '\u0139', 197 },
                        { /* 'Ć' */ '\u0106', 198 },
                        { /* 'Č' */ '\u010c', 200 },
                        { /* 'Ę' */ '\u0118', 202 },
                        { /* 'Ě' */ '\u011a', 204 },
                        { /* 'Ď' */ '\u010e', 207 },
                        { /* 'Đ' */ '\u0110', 208 },
                        { /* 'Ń' */ '\u0143', 209 },
                        { /* 'Ň' */ '\u0147', 210 },
                        { /* 'Ő' */ '\u0150', 213 },
                        { /* 'Ř' */ '\u0158', 216 },
                        { /* 'Ů' */ '\u016e', 217 },
                        { /* 'Ű' */ '\u0170', 219 },
                        { /* 'Ţ' */ '\u0162', 222 },
                        { /* 'ŕ' */ '\u0155', 224 },
                        { /* 'ă' */ '\u0103', 227 },
                        { /* 'ĺ' */ '\u013a', 229 },
                        { /* 'ć' */ '\u0107', 230 },
                        { /* 'č' */ '\u010d', 232 },
                        { /* 'ę' */ '\u0119', 234 },
                        { /* 'ě' */ '\u011b', 236 },
                        { /* 'ď' */ '\u010f', 239 },
                        { /* 'đ' */ '\u0111', 240 },
                        { /* 'ń' */ '\u0144', 241 },
                        { /* 'ň' */ '\u0148', 242 },
                        { /* 'ő' */ '\u0151', 245 },
                        { /* 'ř' */ '\u0159', 248 },
                        { /* 'ů' */ '\u016f', 249 },
                        { /* 'ű' */ '\u0171', 251 },
                        { /* 'ţ' */ '\u0163', 254 },
                        { /* '˙' */ '\u02d9', 255 },
            };
        }
Beispiel #22
0
 protected CodePageEncoding(int codePage, string name, string webName, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
     : base(codePage, encoderFallback, decoderFallback)
 {
     codePage_     = codePage;
     encodingName_ = name;
     webName_      = webName;
 }
 protected Encoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
        public Windows1252Encoding(EncoderFallback encoderFallback, DecoderFallback decoderFallback)
            : base(1252, "Western Europe (Windows)", "Windows-1252", encoderFallback, decoderFallback)
        {
            byteToChars_ = new char[]
            {
                '\u0000'       // NULL
                , '\u0001'     // SOH
                , '\u0002'     // STX
                , '\u0003'     // ETX
                , '\u0004'     // EOT
                , '\u0005'     // ENQ
                , '\u0006'     // ACK
                , '\u0007'     // BEL
                , '\u0008'     // BS
                , '\u0009'     // TAB
                , '\u000a'     // LF
                , '\u000b'     // VT
                , '\u000c'     // FF
                , '\u000d'     // CR
                , '\u000e'     // SO
                , '\u000f'     // SI
                , '\u0010'     // DLE
                , '\u0011'     // DC1
                , '\u0012'     // DC2
                , '\u0013'     // DC3
                , '\u0014'     // DC4
                , '\u0015'     // NAK
                , '\u0016'     // SYN
                , '\u0017'     // ETB
                , '\u0018'     // CAN
                , '\u0019'     // EM
                , '\u001a'     // SUB
                , '\u001b'     // ESC
                , '\u001c'     // FS
                , '\u001d'     // GS
                , '\u001e'     // RS
                , '\u001f'     // US
                , '\u0020'     // ' '
                , '\u0021'     // '!'
                , '\u0022'     // '"'
                , '\u0023'     // '#'
                , '\u0024'     // '$'
                , '\u0025'     // '%'
                , '\u0026'     // '&'
                , '\u0027'     // '''
                , '\u0028'     // '('
                , '\u0029'     // ')'
                , '\u002a'     // '*'
                , '\u002b'     // '+'
                , '\u002c'     // ','
                , '\u002d'     // '-'
                , '\u002e'     // '.'
                , '\u002f'     // '/'
                , '\u0030'     // '0'
                , '\u0031'     // '1'
                , '\u0032'     // '2'
                , '\u0033'     // '3'
                , '\u0034'     // '4'
                , '\u0035'     // '5'
                , '\u0036'     // '6'
                , '\u0037'     // '7'
                , '\u0038'     // '8'
                , '\u0039'     // '9'
                , '\u003a'     // ':'
                , '\u003b'     // ';'
                , '\u003c'     // '<'
                , '\u003d'     // '='
                , '\u003e'     // '>'
                , '\u003f'     // '?'
                , '\u0040'     // '@'
                , '\u0041'     // 'A'
                , '\u0042'     // 'B'
                , '\u0043'     // 'C'
                , '\u0044'     // 'D'
                , '\u0045'     // 'E'
                , '\u0046'     // 'F'
                , '\u0047'     // 'G'
                , '\u0048'     // 'H'
                , '\u0049'     // 'I'
                , '\u004a'     // 'J'
                , '\u004b'     // 'K'
                , '\u004c'     // 'L'
                , '\u004d'     // 'M'
                , '\u004e'     // 'N'
                , '\u004f'     // 'O'
                , '\u0050'     // 'P'
                , '\u0051'     // 'Q'
                , '\u0052'     // 'R'
                , '\u0053'     // 'S'
                , '\u0054'     // 'T'
                , '\u0055'     // 'U'
                , '\u0056'     // 'V'
                , '\u0057'     // 'W'
                , '\u0058'     // 'X'
                , '\u0059'     // 'Y'
                , '\u005a'     // 'Z'
                , '\u005b'     // '['
                , '\u005c'     // '\'
                , '\u005d'     // ']'
                , '\u005e'     // '^'
                , '\u005f'     // '_'
                , '\u0060'     // '`'
                , '\u0061'     // 'a'
                , '\u0062'     // 'b'
                , '\u0063'     // 'c'
                , '\u0064'     // 'd'
                , '\u0065'     // 'e'
                , '\u0066'     // 'f'
                , '\u0067'     // 'g'
                , '\u0068'     // 'h'
                , '\u0069'     // 'i'
                , '\u006a'     // 'j'
                , '\u006b'     // 'k'
                , '\u006c'     // 'l'
                , '\u006d'     // 'm'
                , '\u006e'     // 'n'
                , '\u006f'     // 'o'
                , '\u0070'     // 'p'
                , '\u0071'     // 'q'
                , '\u0072'     // 'r'
                , '\u0073'     // 's'
                , '\u0074'     // 't'
                , '\u0075'     // 'u'
                , '\u0076'     // 'v'
                , '\u0077'     // 'w'
                , '\u0078'     // 'x'
                , '\u0079'     // 'y'
                , '\u007a'     // 'z'
                , '\u007b'     // '{'
                , '\u007c'     // '|'
                , '\u007d'     // '}'
                , '\u007e'     // '~'
                , '\u007f'     // ''
                , '\u20ac'     // '€'
                , '\u0081'     // not mapped
                , '\u201a'     // '‚'
                , '\u0192'     // 'ƒ'
                , '\u201e'     // '„'
                , '\u2026'     // '…'
                , '\u2020'     // '†'
                , '\u2021'     // '‡'
                , '\u02c6'     // 'ˆ'
                , '\u2030'     // '‰'
                , '\u0160'     // 'Š'
                , '\u2039'     // '‹'
                , '\u0152'     // 'Œ'
                , '\u008d'     // not mapped
                , '\u017d'     // 'Ž'
                , '\u008f'     // not mapped
                , '\u0090'     // not mapped
                , '\u2018'     // '‘'
                , '\u2019'     // '’'
                , '\u201c'     // '“'
                , '\u201d'     // '”'
                , '\u2022'     // '•'
                , '\u2013'     // '–'
                , '\u2014'     // '—'
                , '\u02dc'     // '˜'
                , '\u2122'     // '™'
                , '\u0161'     // 'š'
                , '\u203a'     // '›'
                , '\u0153'     // 'œ'
                , '\u009d'     // not mapped
                , '\u017e'     // 'ž'
                , '\u0178'     // 'Ÿ'
                , '\u00a0'     // ' '
                , '\u00a1'     // '¡'
                , '\u00a2'     // '¢'
                , '\u00a3'     // '£'
                , '\u00a4'     // '¤'
                , '\u00a5'     // '¥'
                , '\u00a6'     // '¦'
                , '\u00a7'     // '§'
                , '\u00a8'     // '¨'
                , '\u00a9'     // '©'
                , '\u00aa'     // 'ª'
                , '\u00ab'     // '«'
                , '\u00ac'     // '¬'
                , '\u00ad'     // '­'
                , '\u00ae'     // '®'
                , '\u00af'     // '¯'
                , '\u00b0'     // '°'
                , '\u00b1'     // '±'
                , '\u00b2'     // '²'
                , '\u00b3'     // '³'
                , '\u00b4'     // '´'
                , '\u00b5'     // 'µ'
                , '\u00b6'     // '¶'
                , '\u00b7'     // '·'
                , '\u00b8'     // '¸'
                , '\u00b9'     // '¹'
                , '\u00ba'     // 'º'
                , '\u00bb'     // '»'
                , '\u00bc'     // '¼'
                , '\u00bd'     // '½'
                , '\u00be'     // '¾'
                , '\u00bf'     // '¿'
                , '\u00c0'     // 'À'
                , '\u00c1'     // 'Á'
                , '\u00c2'     // 'Â'
                , '\u00c3'     // 'Ã'
                , '\u00c4'     // 'Ä'
                , '\u00c5'     // 'Å'
                , '\u00c6'     // 'Æ'
                , '\u00c7'     // 'Ç'
                , '\u00c8'     // 'È'
                , '\u00c9'     // 'É'
                , '\u00ca'     // 'Ê'
                , '\u00cb'     // 'Ë'
                , '\u00cc'     // 'Ì'
                , '\u00cd'     // 'Í'
                , '\u00ce'     // 'Î'
                , '\u00cf'     // 'Ï'
                , '\u00d0'     // 'Ð'
                , '\u00d1'     // 'Ñ'
                , '\u00d2'     // 'Ò'
                , '\u00d3'     // 'Ó'
                , '\u00d4'     // 'Ô'
                , '\u00d5'     // 'Õ'
                , '\u00d6'     // 'Ö'
                , '\u00d7'     // '×'
                , '\u00d8'     // 'Ø'
                , '\u00d9'     // 'Ù'
                , '\u00da'     // 'Ú'
                , '\u00db'     // 'Û'
                , '\u00dc'     // 'Ü'
                , '\u00dd'     // 'Ý'
                , '\u00de'     // 'Þ'
                , '\u00df'     // 'ß'
                , '\u00e0'     // 'à'
                , '\u00e1'     // 'á'
                , '\u00e2'     // 'â'
                , '\u00e3'     // 'ã'
                , '\u00e4'     // 'ä'
                , '\u00e5'     // 'å'
                , '\u00e6'     // 'æ'
                , '\u00e7'     // 'ç'
                , '\u00e8'     // 'è'
                , '\u00e9'     // 'é'
                , '\u00ea'     // 'ê'
                , '\u00eb'     // 'ë'
                , '\u00ec'     // 'ì'
                , '\u00ed'     // 'í'
                , '\u00ee'     // 'î'
                , '\u00ef'     // 'ï'
                , '\u00f0'     // 'ð'
                , '\u00f1'     // 'ñ'
                , '\u00f2'     // 'ò'
                , '\u00f3'     // 'ó'
                , '\u00f4'     // 'ô'
                , '\u00f5'     // 'õ'
                , '\u00f6'     // 'ö'
                , '\u00f7'     // '÷'
                , '\u00f8'     // 'ø'
                , '\u00f9'     // 'ù'
                , '\u00fa'     // 'ú'
                , '\u00fb'     // 'û'
                , '\u00fc'     // 'ü'
                , '\u00fd'     // 'ý'
                , '\u00fe'     // 'þ'
                , '\u00ff'     // 'ÿ'
            };

            charToBytes_ = new Dictionary <char, byte>()
            {
                { /* '€' */ '\u20ac', 128 },
                { /* '‚' */ '\u201a', 130 },
                { /* 'ƒ' */ '\u0192', 131 },
                { /* '„' */ '\u201e', 132 },
                { /* '…' */ '\u2026', 133 },
                { /* '†' */ '\u2020', 134 },
                { /* '‡' */ '\u2021', 135 },
                { /* 'ˆ' */ '\u02c6', 136 },
                { /* '‰' */ '\u2030', 137 },
                { /* 'Š' */ '\u0160', 138 },
                { /* '‹' */ '\u2039', 139 },
                { /* 'Œ' */ '\u0152', 140 },
                { /* 'Ž' */ '\u017d', 142 },
                { /* '‘' */ '\u2018', 145 },
                { /* '’' */ '\u2019', 146 },
                { /* '“' */ '\u201c', 147 },
                { /* '”' */ '\u201d', 148 },
                { /* '•' */ '\u2022', 149 },
                { /* '–' */ '\u2013', 150 },
                { /* '—' */ '\u2014', 151 },
                { /* '˜' */ '\u02dc', 152 },
                { /* '™' */ '\u2122', 153 },
                { /* 'š' */ '\u0161', 154 },
                { /* '›' */ '\u203a', 155 },
                { /* 'œ' */ '\u0153', 156 },
                { /* 'ž' */ '\u017e', 158 },
                { /* 'Ÿ' */ '\u0178', 159 },
            };
        }
 public static Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
Beispiel #26
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CsvReaderVisitorWithUTF8HeadersBase"/> class.
        /// </summary>
        /// <param name="maxHeaderCount">
        /// The maximum number of headers to allow.
        /// Default: <see cref="DefaultMaxHeaderCount"/>.
        /// </param>
        /// <param name="maxHeaderLength">
        /// The maximum length, in UTF-16 code units, of any particular header.
        /// Default: <see cref="DefaultMaxHeaderLength"/>.
        /// </param>
        /// <param name="ignoreUTF8IdentifierOnFirstHeaderField">
        /// <para>
        /// A value indicating whether or not to ignore a leading UTF-8 BOM.
        /// Default: <see cref="DefaultIgnoreUTF8IdentifierOnFirstHeaderField"/>.
        /// </para>
        /// <para>
        /// This parameter was a mistake (see airbreather/Cursively#14) and will be removed in 2.x.
        /// Instead, always pass in <see langword="false"/>, and remove UTF-8 identifiers directly
        /// at the source instead of leaving it up to the visitor.
        /// </para>
        /// </param>
        /// <param name="decoderFallback">
        /// The fallback logic used when the decoder encounters invalid UTF-8 bytes.
        /// Default: <see cref="DefaultDecoderFallback"/>.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when <paramref name="decoderFallback"/> is <see langword="null"/>.
        /// </exception>
        /// <exception cref="ArgumentOutOfRangeException">
        /// Thrown when <paramref name="maxHeaderCount"/> or <paramref name="maxHeaderLength"/> is
        /// less than 1 or greater than the maximum for that parameter
        /// (<see cref="MaxMaxHeaderCount"/> / <see cref="MaxMaxHeaderLength"/>).
        /// </exception>
        protected CsvReaderVisitorWithUTF8HeadersBase(int maxHeaderCount, int maxHeaderLength, bool ignoreUTF8IdentifierOnFirstHeaderField, DecoderFallback decoderFallback)
        {
            if (maxHeaderCount < 1 || maxHeaderCount > MaxMaxHeaderCount)
            {
                throw new ArgumentOutOfRangeException(nameof(maxHeaderCount), maxHeaderCount, "Must be greater than zero and not greater than MaxMaxHeaderCount.");
            }

            if (maxHeaderLength < 1 || maxHeaderLength > MaxMaxHeaderLength)
            {
                throw new ArgumentOutOfRangeException(nameof(maxHeaderLength), maxHeaderLength, "Must be greater than zero and not greater than MaxMaxHeaderLength.");
            }

            if (decoderFallback is null)
            {
                throw new ArgumentNullException(nameof(decoderFallback));
            }

            _ignoreUTF8IdentifierOnFirstHeaderField = ignoreUTF8IdentifierOnFirstHeaderField;

            _maxHeaderCount = maxHeaderCount;
            _headersBuilder = ImmutableArray.CreateBuilder <string>();

            _maxHeaderLength = maxHeaderLength;
            _headerBuffer    = new char[8];

            _headerDecoder          = EncodingToUse.GetDecoder();
            _headerDecoder.Fallback = decoderFallback;
        }
 public virtual Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback);
 internal PythonAsciiEncoding(EncoderFallback encoderFallback, DecoderFallback decoderFallback)
     : base(0, encoderFallback, decoderFallback)
 {
 }
        internal PythonAsciiEncoding(EncoderFallback encoderFallback, DecoderFallback decoderFallback)
#if !NET45
        // base(0, encoderFallback, decoderFallback) publicly accessible only in .NET Framework 4.6 and up
            : base(0, encoderFallback, decoderFallback)
        {
Beispiel #30
0
 private static Encoding CreateEncoding(int codepage, EncoderFallback /*!*/ encoderFallback, DecoderFallback /*!*/ decoderFallback)
 {
     return(Create(Encoding.GetEncoding(codepage, encoderFallback, decoderFallback)));
 }
        public void Ctor_Int_EncoderFallback_DecoderFallback(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
        {
            CustomEncoding encoding = new CustomEncoding(codePage, encoderFallback, decoderFallback);

            VerifyEncoding(encoding, codePage, encoderFallback, decoderFallback);
        }
Beispiel #32
0
        public static KCoding Create(int codepage, EncoderFallback /*!*/ encoderFallback, DecoderFallback /*!*/ decoderFallback)
        {
            var encoding = CreateEncoding(codepage, encoderFallback, decoderFallback);

            return(encoding != null?Create(encoding) : null);
        }
Beispiel #33
0
        public virtual Encoding?GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
        {
            Encoding?enc = GetEncoding(codepage);

            if (enc != null)
            {
                enc = (Encoding)enc.Clone();
                enc.EncoderFallback = encoderFallback;
                enc.DecoderFallback = decoderFallback;
            }

            return(enc);
        }
Beispiel #34
0
        public Windows1253Encoding(EncoderFallback encoderFallback, DecoderFallback decoderFallback)
            : base(1253, "Greece (Windows)", "windows-1253", encoderFallback, decoderFallback)
        {
            byteToChars_ = new char[]
            {
                          '\u0000' // ''
                        , '\u0001' // ''
                        , '\u0002' // ''
                        , '\u0003' // ''
                        , '\u0004' // ''
                        , '\u0005' // ''
                        , '\u0006' // ''
                        , '\u0007' // ''
                        , '\u0008' // ''
                        , '\u0009' // '<TAB>'
                        , '\u000a' // '<LF>'
                        , '\u000b' // ''
                        , '\u000c' // ''
                        , '\u000d' // '<CR>'
                        , '\u000e' // ''
                        , '\u000f' // ''
                        , '\u0010' // ''
                        , '\u0011' // ''
                        , '\u0012' // ''
                        , '\u0013' // ''
                        , '\u0014' // ''
                        , '\u0015' // ''
                        , '\u0016' // ''
                        , '\u0017' // ''
                        , '\u0018' // ''
                        , '\u0019' // ''
                        , '\u001a' // ''
                        , '\u001b' // ''
                        , '\u001c' // ''
                        , '\u001d' // ''
                        , '\u001e' // ''
                        , '\u001f' // ''
                        , '\u0020' // ' '
                        , '\u0021' // '!'
                        , '\u0022' // '"'
                        , '\u0023' // '#'
                        , '\u0024' // '$'
                        , '\u0025' // '%'
                        , '\u0026' // '&'
                        , '\u0027' // '''
                        , '\u0028' // '('
                        , '\u0029' // ')'
                        , '\u002a' // '*'
                        , '\u002b' // '+'
                        , '\u002c' // ','
                        , '\u002d' // '-'
                        , '\u002e' // '.'
                        , '\u002f' // '/'
                        , '\u0030' // '0'
                        , '\u0031' // '1'
                        , '\u0032' // '2'
                        , '\u0033' // '3'
                        , '\u0034' // '4'
                        , '\u0035' // '5'
                        , '\u0036' // '6'
                        , '\u0037' // '7'
                        , '\u0038' // '8'
                        , '\u0039' // '9'
                        , '\u003a' // ':'
                        , '\u003b' // ';'
                        , '\u003c' // '<'
                        , '\u003d' // '='
                        , '\u003e' // '>'
                        , '\u003f' // '?'
                        , '\u0040' // '@'
                        , '\u0041' // 'A'
                        , '\u0042' // 'B'
                        , '\u0043' // 'C'
                        , '\u0044' // 'D'
                        , '\u0045' // 'E'
                        , '\u0046' // 'F'
                        , '\u0047' // 'G'
                        , '\u0048' // 'H'
                        , '\u0049' // 'I'
                        , '\u004a' // 'J'
                        , '\u004b' // 'K'
                        , '\u004c' // 'L'
                        , '\u004d' // 'M'
                        , '\u004e' // 'N'
                        , '\u004f' // 'O'
                        , '\u0050' // 'P'
                        , '\u0051' // 'Q'
                        , '\u0052' // 'R'
                        , '\u0053' // 'S'
                        , '\u0054' // 'T'
                        , '\u0055' // 'U'
                        , '\u0056' // 'V'
                        , '\u0057' // 'W'
                        , '\u0058' // 'X'
                        , '\u0059' // 'Y'
                        , '\u005a' // 'Z'
                        , '\u005b' // '['
                        , '\u005c' // '\'
                        , '\u005d' // ']'
                        , '\u005e' // '^'
                        , '\u005f' // '_'
                        , '\u0060' // '`'
                        , '\u0061' // 'a'
                        , '\u0062' // 'b'
                        , '\u0063' // 'c'
                        , '\u0064' // 'd'
                        , '\u0065' // 'e'
                        , '\u0066' // 'f'
                        , '\u0067' // 'g'
                        , '\u0068' // 'h'
                        , '\u0069' // 'i'
                        , '\u006a' // 'j'
                        , '\u006b' // 'k'
                        , '\u006c' // 'l'
                        , '\u006d' // 'm'
                        , '\u006e' // 'n'
                        , '\u006f' // 'o'
                        , '\u0070' // 'p'
                        , '\u0071' // 'q'
                        , '\u0072' // 'r'
                        , '\u0073' // 's'
                        , '\u0074' // 't'
                        , '\u0075' // 'u'
                        , '\u0076' // 'v'
                        , '\u0077' // 'w'
                        , '\u0078' // 'x'
                        , '\u0079' // 'y'
                        , '\u007a' // 'z'
                        , '\u007b' // '{'
                        , '\u007c' // '|'
                        , '\u007d' // '}'
                        , '\u007e' // '~'
                        , '\u007f' // ''
                        , '\u20ac' // '€'
                        , '\u0081' // ''
                        , '\u201a' // '‚'
                        , '\u0192' // 'ƒ'
                        , '\u201e' // '„'
                        , '\u2026' // '…'
                        , '\u2020' // '†'
                        , '\u2021' // '‡'
                        , '\u0088' // 'ˆ'
                        , '\u2030' // '‰'
                        , '\u008a' // 'Š'
                        , '\u2039' // '‹'
                        , '\u008c' // 'Œ'
                        , '\u008d' // ''
                        , '\u008e' // 'Ž'
                        , '\u008f' // ''
                        , '\u0090' // ''
                        , '\u2018' // '‘'
                        , '\u2019' // '’'
                        , '\u201c' // '“'
                        , '\u201d' // '”'
                        , '\u2022' // '•'
                        , '\u2013' // '–'
                        , '\u2014' // '—'
                        , '\u0098' // '˜'
                        , '\u2122' // '™'
                        , '\u009a' // 'š'
                        , '\u203a' // '›'
                        , '\u009c' // 'œ'
                        , '\u009d' // ''
                        , '\u009e' // 'ž'
                        , '\u009f' // 'Ÿ'
                        , '\u00a0' // ' '
                        , '\u0385' // '΅'
                        , '\u0386' // 'Ά'
                        , '\u00a3' // '£'
                        , '\u00a4' // '¤'
                        , '\u00a5' // '¥'
                        , '\u00a6' // '¦'
                        , '\u00a7' // '§'
                        , '\u00a8' // '¨'
                        , '\u00a9' // '©'
                        , '\uf8f9' // ''
                        , '\u00ab' // '«'
                        , '\u00ac' // '¬'
                        , '\u00ad' // '­'
                        , '\u00ae' // '®'
                        , '\u2015' // '―'
                        , '\u00b0' // '°'
                        , '\u00b1' // '±'
                        , '\u00b2' // '²'
                        , '\u00b3' // '³'
                        , '\u0384' // '΄'
                        , '\u00b5' // 'µ'
                        , '\u00b6' // '¶'
                        , '\u00b7' // '·'
                        , '\u0388' // 'Έ'
                        , '\u0389' // 'Ή'
                        , '\u038a' // 'Ί'
                        , '\u00bb' // '»'
                        , '\u038c' // 'Ό'
                        , '\u00bd' // '½'
                        , '\u038e' // 'Ύ'
                        , '\u038f' // 'Ώ'
                        , '\u0390' // 'ΐ'
                        , '\u0391' // 'Α'
                        , '\u0392' // 'Β'
                        , '\u0393' // 'Γ'
                        , '\u0394' // 'Δ'
                        , '\u0395' // 'Ε'
                        , '\u0396' // 'Ζ'
                        , '\u0397' // 'Η'
                        , '\u0398' // 'Θ'
                        , '\u0399' // 'Ι'
                        , '\u039a' // 'Κ'
                        , '\u039b' // 'Λ'
                        , '\u039c' // 'Μ'
                        , '\u039d' // 'Ν'
                        , '\u039e' // 'Ξ'
                        , '\u039f' // 'Ο'
                        , '\u03a0' // 'Π'
                        , '\u03a1' // 'Ρ'
                        , '\uf8fa' // ''
                        , '\u03a3' // 'Σ'
                        , '\u03a4' // 'Τ'
                        , '\u03a5' // 'Υ'
                        , '\u03a6' // 'Φ'
                        , '\u03a7' // 'Χ'
                        , '\u03a8' // 'Ψ'
                        , '\u03a9' // 'Ω'
                        , '\u03aa' // 'Ϊ'
                        , '\u03ab' // 'Ϋ'
                        , '\u03ac' // 'ά'
                        , '\u03ad' // 'έ'
                        , '\u03ae' // 'ή'
                        , '\u03af' // 'ί'
                        , '\u03b0' // 'ΰ'
                        , '\u03b1' // 'α'
                        , '\u03b2' // 'β'
                        , '\u03b3' // 'γ'
                        , '\u03b4' // 'δ'
                        , '\u03b5' // 'ε'
                        , '\u03b6' // 'ζ'
                        , '\u03b7' // 'η'
                        , '\u03b8' // 'θ'
                        , '\u03b9' // 'ι'
                        , '\u03ba' // 'κ'
                        , '\u03bb' // 'λ'
                        , '\u03bc' // 'μ'
                        , '\u03bd' // 'ν'
                        , '\u03be' // 'ξ'
                        , '\u03bf' // 'ο'
                        , '\u03c0' // 'π'
                        , '\u03c1' // 'ρ'
                        , '\u03c2' // 'ς'
                        , '\u03c3' // 'σ'
                        , '\u03c4' // 'τ'
                        , '\u03c5' // 'υ'
                        , '\u03c6' // 'φ'
                        , '\u03c7' // 'χ'
                        , '\u03c8' // 'ψ'
                        , '\u03c9' // 'ω'
                        , '\u03ca' // 'ϊ'
                        , '\u03cb' // 'ϋ'
                        , '\u03cc' // 'ό'
                        , '\u03cd' // 'ύ'
                        , '\u03ce' // 'ώ'
                        , '\uf8fb' // ''
                };

            charToBytes_ = new Dictionary<char, byte>()
            {
                        { /* '€' */ '\u20ac', 128 },
                        { /* '‚' */ '\u201a', 130 },
                        { /* 'ƒ' */ '\u0192', 131 },
                        { /* '„' */ '\u201e', 132 },
                        { /* '…' */ '\u2026', 133 },
                        { /* '†' */ '\u2020', 134 },
                        { /* '‡' */ '\u2021', 135 },
                        { /* '‰' */ '\u2030', 137 },
                        { /* '‹' */ '\u2039', 139 },
                        { /* '‘' */ '\u2018', 145 },
                        { /* '’' */ '\u2019', 146 },
                        { /* '“' */ '\u201c', 147 },
                        { /* '”' */ '\u201d', 148 },
                        { /* '•' */ '\u2022', 149 },
                        { /* '–' */ '\u2013', 150 },
                        { /* '—' */ '\u2014', 151 },
                        { /* '™' */ '\u2122', 153 },
                        { /* '›' */ '\u203a', 155 },
                        { /* '΅' */ '\u0385', 161 },
                        { /* 'Ά' */ '\u0386', 162 },
                        { /* '' */ '\uf8f9', 170 },
                        { /* '―' */ '\u2015', 175 },
                        { /* '΄' */ '\u0384', 180 },
                        { /* 'Έ' */ '\u0388', 184 },
                        { /* 'Ή' */ '\u0389', 185 },
                        { /* 'Ί' */ '\u038a', 186 },
                        { /* 'Ό' */ '\u038c', 188 },
                        { /* 'Ύ' */ '\u038e', 190 },
                        { /* 'Ώ' */ '\u038f', 191 },
                        { /* 'ΐ' */ '\u0390', 192 },
                        { /* 'Α' */ '\u0391', 193 },
                        { /* 'Β' */ '\u0392', 194 },
                        { /* 'Γ' */ '\u0393', 195 },
                        { /* 'Δ' */ '\u0394', 196 },
                        { /* 'Ε' */ '\u0395', 197 },
                        { /* 'Ζ' */ '\u0396', 198 },
                        { /* 'Η' */ '\u0397', 199 },
                        { /* 'Θ' */ '\u0398', 200 },
                        { /* 'Ι' */ '\u0399', 201 },
                        { /* 'Κ' */ '\u039a', 202 },
                        { /* 'Λ' */ '\u039b', 203 },
                        { /* 'Μ' */ '\u039c', 204 },
                        { /* 'Ν' */ '\u039d', 205 },
                        { /* 'Ξ' */ '\u039e', 206 },
                        { /* 'Ο' */ '\u039f', 207 },
                        { /* 'Π' */ '\u03a0', 208 },
                        { /* 'Ρ' */ '\u03a1', 209 },
                        { /* '' */ '\uf8fa', 210 },
                        { /* 'Σ' */ '\u03a3', 211 },
                        { /* 'Τ' */ '\u03a4', 212 },
                        { /* 'Υ' */ '\u03a5', 213 },
                        { /* 'Φ' */ '\u03a6', 214 },
                        { /* 'Χ' */ '\u03a7', 215 },
                        { /* 'Ψ' */ '\u03a8', 216 },
                        { /* 'Ω' */ '\u03a9', 217 },
                        { /* 'Ϊ' */ '\u03aa', 218 },
                        { /* 'Ϋ' */ '\u03ab', 219 },
                        { /* 'ά' */ '\u03ac', 220 },
                        { /* 'έ' */ '\u03ad', 221 },
                        { /* 'ή' */ '\u03ae', 222 },
                        { /* 'ί' */ '\u03af', 223 },
                        { /* 'ΰ' */ '\u03b0', 224 },
                        { /* 'α' */ '\u03b1', 225 },
                        { /* 'β' */ '\u03b2', 226 },
                        { /* 'γ' */ '\u03b3', 227 },
                        { /* 'δ' */ '\u03b4', 228 },
                        { /* 'ε' */ '\u03b5', 229 },
                        { /* 'ζ' */ '\u03b6', 230 },
                        { /* 'η' */ '\u03b7', 231 },
                        { /* 'θ' */ '\u03b8', 232 },
                        { /* 'ι' */ '\u03b9', 233 },
                        { /* 'κ' */ '\u03ba', 234 },
                        { /* 'λ' */ '\u03bb', 235 },
                        { /* 'μ' */ '\u03bc', 236 },
                        { /* 'ν' */ '\u03bd', 237 },
                        { /* 'ξ' */ '\u03be', 238 },
                        { /* 'ο' */ '\u03bf', 239 },
                        { /* 'π' */ '\u03c0', 240 },
                        { /* 'ρ' */ '\u03c1', 241 },
                        { /* 'ς' */ '\u03c2', 242 },
                        { /* 'σ' */ '\u03c3', 243 },
                        { /* 'τ' */ '\u03c4', 244 },
                        { /* 'υ' */ '\u03c5', 245 },
                        { /* 'φ' */ '\u03c6', 246 },
                        { /* 'χ' */ '\u03c7', 247 },
                        { /* 'ψ' */ '\u03c8', 248 },
                        { /* 'ω' */ '\u03c9', 249 },
                        { /* 'ϊ' */ '\u03ca', 250 },
                        { /* 'ϋ' */ '\u03cb', 251 },
                        { /* 'ό' */ '\u03cc', 252 },
                        { /* 'ύ' */ '\u03cd', 253 },
                        { /* 'ώ' */ '\u03ce', 254 },
                        { /* '' */ '\uf8fb', 255 },
            };
        }
Beispiel #35
0
 public CustomEncoding(int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback) : base(codePage, encoderFallback, decoderFallback)
 {
 }
Beispiel #36
0
        public static void VerifyEncoding(Encoding encoding, int codePage, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
        {
            if (encoderFallback == null)
            {
                Assert.NotNull(encoding.EncoderFallback);
                Assert.Equal(codePage, encoding.EncoderFallback.GetHashCode());
            }
            else
            {
                Assert.Same(encoderFallback, encoding.EncoderFallback);
            }

            if (decoderFallback == null)
            {
                Assert.NotNull(encoding.DecoderFallback);
                Assert.Equal(codePage, encoding.DecoderFallback.GetHashCode());
            }
            else
            {
                Assert.Same(decoderFallback, encoding.DecoderFallback);
            }

            Assert.Empty(encoding.GetPreamble());
            Assert.False(encoding.IsSingleByte);
        }
Beispiel #37
0
 public override Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 => _staticInstance?.GetEncoding(name, encoderFallback, decoderFallback);
Beispiel #38
0
 public static Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback)
 {
 }