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); }
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); }
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); }
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); }
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); }
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); }
public override Encoding GetEncoding(int codepage, EncoderFallback encoderFallback, DecoderFallback decoderFallback) => _staticInstance?.GetEncoding(codepage, encoderFallback, decoderFallback);
/// <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()); }
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); }
public static Encoding GetEncoding(int encodingName, EncoderFallback encoderFallback, DecoderFallback decoderFallback) { return(Encoding.GetEncoding(encodingName, encoderFallback, decoderFallback)); }
public FallbackDetector(DecoderFallback decoderFallback) { this.decoderFallback = 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); }
/// <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()); }
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 }, }; }
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);
/// <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) {
private static Encoding CreateEncoding(int codepage, EncoderFallback /*!*/ encoderFallback, DecoderFallback /*!*/ decoderFallback) { return(Create(Encoding.GetEncoding(codepage, encoderFallback, decoderFallback))); }
public static KCoding Create(int codepage, EncoderFallback /*!*/ encoderFallback, DecoderFallback /*!*/ decoderFallback) { var encoding = CreateEncoding(codepage, encoderFallback, decoderFallback); return(encoding != null?Create(encoding) : null); }
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); }
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 }, }; }
public override Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback) => _staticInstance?.GetEncoding(name, encoderFallback, decoderFallback);
public static Encoding GetEncoding(string name, EncoderFallback encoderFallback, DecoderFallback decoderFallback) { }