Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Windows1252.cs
1using System;
2using System.Collections.Generic;
3using System.Text;
4
6{
7 public class Windows1252 : Encoding
8 {
12 private static readonly char?[] codeToUnicode = new char?[]
13 {
14 /* 0x00 */ (char)0x0000, // NULL
15 /* 0x01 */ (char)0x0001, // START OF HEADING
16 /* 0x02 */ (char)0x0002, // START OF TEXT
17 /* 0x03 */ (char)0x0003, // END OF TEXT
18 /* 0x04 */ (char)0x0004, // END OF TRANSMISSION
19 /* 0x05 */ (char)0x0005, // ENQUIRY
20 /* 0x06 */ (char)0x0006, // ACKNOWLEDGE
21 /* 0x07 */ (char)0x0007, // BELL
22 /* 0x08 */ (char)0x0008, // BACKSPACE
23 /* 0x09 */ (char)0x0009, // HORIZONTAL TABULATION
24 /* 0x0A */ (char)0x000A, // LINE FEED
25 /* 0x0B */ (char)0x000B, // VERTICAL TABULATION
26 /* 0x0C */ (char)0x000C, // FORM FEED
27 /* 0x0D */ (char)0x000D, // CARRIAGE RETURN
28 /* 0x0E */ (char)0x000E, // SHIFT OUT
29 /* 0x0F */ (char)0x000F, // SHIFT IN
30 /* 0x10 */ (char)0x0010, // DATA LINK ESCAPE
31 /* 0x11 */ (char)0x0011, // DEVICE CONTROL ONE
32 /* 0x12 */ (char)0x0012, // DEVICE CONTROL TWO
33 /* 0x13 */ (char)0x0013, // DEVICE CONTROL THREE
34 /* 0x14 */ (char)0x0014, // DEVICE CONTROL FOUR
35 /* 0x15 */ (char)0x0015, // NEGATIVE ACKNOWLEDGE
36 /* 0x16 */ (char)0x0016, // SYNCHRONOUS IDLE
37 /* 0x17 */ (char)0x0017, // END OF TRANSMISSION BLOCK
38 /* 0x18 */ (char)0x0018, // CANCEL
39 /* 0x19 */ (char)0x0019, // END OF MEDIUM
40 /* 0x1A */ (char)0x001A, // SUBSTITUTE
41 /* 0x1B */ (char)0x001B, // ESCAPE
42 /* 0x1C */ (char)0x001C, // FILE SEPARATOR
43 /* 0x1D */ (char)0x001D, // GROUP SEPARATOR
44 /* 0x1E */ (char)0x001E, // RECORD SEPARATOR
45 /* 0x1F */ (char)0x001F, // UNIT SEPARATOR
46 /* 0x20 */ (char)0x0020, // SPACE
47 /* 0x21 */ (char)0x0021, // EXCLAMATION MARK
48 /* 0x22 */ (char)0x0022, // QUOTATION MARK
49 /* 0x23 */ (char)0x0023, // NUMBER SIGN
50 /* 0x24 */ (char)0x0024, // DOLLAR SIGN
51 /* 0x25 */ (char)0x0025, // PERCENT SIGN
52 /* 0x26 */ (char)0x0026, // AMPERSAND
53 /* 0x27 */ (char)0x0027, // APOSTROPHE
54 /* 0x28 */ (char)0x0028, // LEFT PARENTHESIS
55 /* 0x29 */ (char)0x0029, // RIGHT PARENTHESIS
56 /* 0x2A */ (char)0x002A, // ASTERISK
57 /* 0x2B */ (char)0x002B, // PLUS SIGN
58 /* 0x2C */ (char)0x002C, // COMMA
59 /* 0x2D */ (char)0x002D, // HYPHEN-MINUS
60 /* 0x2E */ (char)0x002E, // FULL STOP
61 /* 0x2F */ (char)0x002F, // SOLIDUS
62 /* 0x30 */ (char)0x0030, // DIGIT ZERO
63 /* 0x31 */ (char)0x0031, // DIGIT ONE
64 /* 0x32 */ (char)0x0032, // DIGIT TWO
65 /* 0x33 */ (char)0x0033, // DIGIT THREE
66 /* 0x34 */ (char)0x0034, // DIGIT FOUR
67 /* 0x35 */ (char)0x0035, // DIGIT FIVE
68 /* 0x36 */ (char)0x0036, // DIGIT SIX
69 /* 0x37 */ (char)0x0037, // DIGIT SEVEN
70 /* 0x38 */ (char)0x0038, // DIGIT EIGHT
71 /* 0x39 */ (char)0x0039, // DIGIT NINE
72 /* 0x3A */ (char)0x003A, // COLON
73 /* 0x3B */ (char)0x003B, // SEMICOLON
74 /* 0x3C */ (char)0x003C, // LESS-THAN SIGN
75 /* 0x3D */ (char)0x003D, // EQUALS SIGN
76 /* 0x3E */ (char)0x003E, // GREATER-THAN SIGN
77 /* 0x3F */ (char)0x003F, // QUESTION MARK
78 /* 0x40 */ (char)0x0040, // COMMERCIAL AT
79 /* 0x41 */ (char)0x0041, // LATIN CAPITAL LETTER A
80 /* 0x42 */ (char)0x0042, // LATIN CAPITAL LETTER B
81 /* 0x43 */ (char)0x0043, // LATIN CAPITAL LETTER C
82 /* 0x44 */ (char)0x0044, // LATIN CAPITAL LETTER D
83 /* 0x45 */ (char)0x0045, // LATIN CAPITAL LETTER E
84 /* 0x46 */ (char)0x0046, // LATIN CAPITAL LETTER F
85 /* 0x47 */ (char)0x0047, // LATIN CAPITAL LETTER G
86 /* 0x48 */ (char)0x0048, // LATIN CAPITAL LETTER H
87 /* 0x49 */ (char)0x0049, // LATIN CAPITAL LETTER I
88 /* 0x4A */ (char)0x004A, // LATIN CAPITAL LETTER J
89 /* 0x4B */ (char)0x004B, // LATIN CAPITAL LETTER K
90 /* 0x4C */ (char)0x004C, // LATIN CAPITAL LETTER L
91 /* 0x4D */ (char)0x004D, // LATIN CAPITAL LETTER M
92 /* 0x4E */ (char)0x004E, // LATIN CAPITAL LETTER N
93 /* 0x4F */ (char)0x004F, // LATIN CAPITAL LETTER O
94 /* 0x50 */ (char)0x0050, // LATIN CAPITAL LETTER P
95 /* 0x51 */ (char)0x0051, // LATIN CAPITAL LETTER Q
96 /* 0x52 */ (char)0x0052, // LATIN CAPITAL LETTER R
97 /* 0x53 */ (char)0x0053, // LATIN CAPITAL LETTER S
98 /* 0x54 */ (char)0x0054, // LATIN CAPITAL LETTER T
99 /* 0x55 */ (char)0x0055, // LATIN CAPITAL LETTER U
100 /* 0x56 */ (char)0x0056, // LATIN CAPITAL LETTER V
101 /* 0x57 */ (char)0x0057, // LATIN CAPITAL LETTER W
102 /* 0x58 */ (char)0x0058, // LATIN CAPITAL LETTER X
103 /* 0x59 */ (char)0x0059, // LATIN CAPITAL LETTER Y
104 /* 0x5A */ (char)0x005A, // LATIN CAPITAL LETTER Z
105 /* 0x5B */ (char)0x005B, // LEFT SQUARE BRACKET
106 /* 0x5C */ (char)0x005C, // REVERSE SOLIDUS
107 /* 0x5D */ (char)0x005D, // RIGHT SQUARE BRACKET
108 /* 0x5E */ (char)0x005E, // CIRCUMFLEX ACCENT
109 /* 0x5F */ (char)0x005F, // LOW LINE
110 /* 0x60 */ (char)0x0060, // GRAVE ACCENT
111 /* 0x61 */ (char)0x0061, // LATIN SMALL LETTER A
112 /* 0x62 */ (char)0x0062, // LATIN SMALL LETTER B
113 /* 0x63 */ (char)0x0063, // LATIN SMALL LETTER C
114 /* 0x64 */ (char)0x0064, // LATIN SMALL LETTER D
115 /* 0x65 */ (char)0x0065, // LATIN SMALL LETTER E
116 /* 0x66 */ (char)0x0066, // LATIN SMALL LETTER F
117 /* 0x67 */ (char)0x0067, // LATIN SMALL LETTER G
118 /* 0x68 */ (char)0x0068, // LATIN SMALL LETTER H
119 /* 0x69 */ (char)0x0069, // LATIN SMALL LETTER I
120 /* 0x6A */ (char)0x006A, // LATIN SMALL LETTER J
121 /* 0x6B */ (char)0x006B, // LATIN SMALL LETTER K
122 /* 0x6C */ (char)0x006C, // LATIN SMALL LETTER L
123 /* 0x6D */ (char)0x006D, // LATIN SMALL LETTER M
124 /* 0x6E */ (char)0x006E, // LATIN SMALL LETTER N
125 /* 0x6F */ (char)0x006F, // LATIN SMALL LETTER O
126 /* 0x70 */ (char)0x0070, // LATIN SMALL LETTER P
127 /* 0x71 */ (char)0x0071, // LATIN SMALL LETTER Q
128 /* 0x72 */ (char)0x0072, // LATIN SMALL LETTER R
129 /* 0x73 */ (char)0x0073, // LATIN SMALL LETTER S
130 /* 0x74 */ (char)0x0074, // LATIN SMALL LETTER T
131 /* 0x75 */ (char)0x0075, // LATIN SMALL LETTER U
132 /* 0x76 */ (char)0x0076, // LATIN SMALL LETTER V
133 /* 0x77 */ (char)0x0077, // LATIN SMALL LETTER W
134 /* 0x78 */ (char)0x0078, // LATIN SMALL LETTER X
135 /* 0x79 */ (char)0x0079, // LATIN SMALL LETTER Y
136 /* 0x7A */ (char)0x007A, // LATIN SMALL LETTER Z
137 /* 0x7B */ (char)0x007B, // LEFT CURLY BRACKET
138 /* 0x7C */ (char)0x007C, // VERTICAL LINE
139 /* 0x7D */ (char)0x007D, // RIGHT CURLY BRACKET
140 /* 0x7E */ (char)0x007E, // TILDE
141 /* 0x7F */ (char)0x007F, // DELETE
142 /* 0x80 */ (char)0x20AC, // EURO SIGN
143 /* 0x81 */ null , // UNDEFINED
144 /* 0x82 */ (char)0x201A, // SINGLE LOW-9 QUOTATION MARK
145 /* 0x83 */ (char)0x0192, // LATIN SMALL LETTER F WITH HOOK
146 /* 0x84 */ (char)0x201E, // DOUBLE LOW-9 QUOTATION MARK
147 /* 0x85 */ (char)0x2026, // HORIZONTAL ELLIPSIS
148 /* 0x86 */ (char)0x2020, // DAGGER
149 /* 0x87 */ (char)0x2021, // DOUBLE DAGGER
150 /* 0x88 */ (char)0x02C6, // MODIFIER LETTER CIRCUMFLEX ACCENT
151 /* 0x89 */ (char)0x2030, // PER MILLE SIGN
152 /* 0x8A */ (char)0x0160, // LATIN CAPITAL LETTER S WITH CARON
153 /* 0x8B */ (char)0x2039, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
154 /* 0x8C */ (char)0x0152, // LATIN CAPITAL LIGATURE OE
155 /* 0x8D */ null , // UNDEFINED
156 /* 0x8E */ (char)0x017D, // LATIN CAPITAL LETTER Z WITH CARON
157 /* 0x8F */ null , // UNDEFINED
158 /* 0x90 */ null , // UNDEFINED
159 /* 0x91 */ (char)0x2018, // LEFT SINGLE QUOTATION MARK
160 /* 0x92 */ (char)0x2019, // RIGHT SINGLE QUOTATION MARK
161 /* 0x93 */ (char)0x201C, // LEFT DOUBLE QUOTATION MARK
162 /* 0x94 */ (char)0x201D, // RIGHT DOUBLE QUOTATION MARK
163 /* 0x95 */ (char)0x2022, // BULLET
164 /* 0x96 */ (char)0x2013, // EN DASH
165 /* 0x97 */ (char)0x2014, // EM DASH
166 /* 0x98 */ (char)0x02DC, // SMALL TILDE
167 /* 0x99 */ (char)0x2122, // TRADE MARK SIGN
168 /* 0x9A */ (char)0x0161, // LATIN SMALL LETTER S WITH CARON
169 /* 0x9B */ (char)0x203A, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
170 /* 0x9C */ (char)0x0153, // LATIN SMALL LIGATURE OE
171 /* 0x9D */ null , // UNDEFINED
172 /* 0x9E */ (char)0x017E, // LATIN SMALL LETTER Z WITH CARON
173 /* 0x9F */ (char)0x0178, // LATIN CAPITAL LETTER Y WITH DIAERESIS
174 /* 0xA0 */ (char)0x00A0, // NO-BREAK SPACE
175 /* 0xA1 */ (char)0x00A1, // INVERTED EXCLAMATION MARK
176 /* 0xA2 */ (char)0x00A2, // CENT SIGN
177 /* 0xA3 */ (char)0x00A3, // POUND SIGN
178 /* 0xA4 */ (char)0x00A4, // CURRENCY SIGN
179 /* 0xA5 */ (char)0x00A5, // YEN SIGN
180 /* 0xA6 */ (char)0x00A6, // BROKEN BAR
181 /* 0xA7 */ (char)0x00A7, // SECTION SIGN
182 /* 0xA8 */ (char)0x00A8, // DIAERESIS
183 /* 0xA9 */ (char)0x00A9, // COPYRIGHT SIGN
184 /* 0xAA */ (char)0x00AA, // FEMININE ORDINAL INDICATOR
185 /* 0xAB */ (char)0x00AB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
186 /* 0xAC */ (char)0x00AC, // NOT SIGN
187 /* 0xAD */ (char)0x00AD, // SOFT HYPHEN
188 /* 0xAE */ (char)0x00AE, // REGISTERED SIGN
189 /* 0xAF */ (char)0x00AF, // MACRON
190 /* 0xB0 */ (char)0x00B0, // DEGREE SIGN
191 /* 0xB1 */ (char)0x00B1, // PLUS-MINUS SIGN
192 /* 0xB2 */ (char)0x00B2, // SUPERSCRIPT TWO
193 /* 0xB3 */ (char)0x00B3, // SUPERSCRIPT THREE
194 /* 0xB4 */ (char)0x00B4, // ACUTE ACCENT
195 /* 0xB5 */ (char)0x00B5, // MICRO SIGN
196 /* 0xB6 */ (char)0x00B6, // PILCROW SIGN
197 /* 0xB7 */ (char)0x00B7, // MIDDLE DOT
198 /* 0xB8 */ (char)0x00B8, // CEDILLA
199 /* 0xB9 */ (char)0x00B9, // SUPERSCRIPT ONE
200 /* 0xBA */ (char)0x00BA, // MASCULINE ORDINAL INDICATOR
201 /* 0xBB */ (char)0x00BB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
202 /* 0xBC */ (char)0x00BC, // VULGAR FRACTION ONE QUARTER
203 /* 0xBD */ (char)0x00BD, // VULGAR FRACTION ONE HALF
204 /* 0xBE */ (char)0x00BE, // VULGAR FRACTION THREE QUARTERS
205 /* 0xBF */ (char)0x00BF, // INVERTED QUESTION MARK
206 /* 0xC0 */ (char)0x00C0, // LATIN CAPITAL LETTER A WITH GRAVE
207 /* 0xC1 */ (char)0x00C1, // LATIN CAPITAL LETTER A WITH ACUTE
208 /* 0xC2 */ (char)0x00C2, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX
209 /* 0xC3 */ (char)0x00C3, // LATIN CAPITAL LETTER A WITH TILDE
210 /* 0xC4 */ (char)0x00C4, // LATIN CAPITAL LETTER A WITH DIAERESIS
211 /* 0xC5 */ (char)0x00C5, // LATIN CAPITAL LETTER A WITH RING ABOVE
212 /* 0xC6 */ (char)0x00C6, // LATIN CAPITAL LETTER AE
213 /* 0xC7 */ (char)0x00C7, // LATIN CAPITAL LETTER C WITH CEDILLA
214 /* 0xC8 */ (char)0x00C8, // LATIN CAPITAL LETTER E WITH GRAVE
215 /* 0xC9 */ (char)0x00C9, // LATIN CAPITAL LETTER E WITH ACUTE
216 /* 0xCA */ (char)0x00CA, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX
217 /* 0xCB */ (char)0x00CB, // LATIN CAPITAL LETTER E WITH DIAERESIS
218 /* 0xCC */ (char)0x00CC, // LATIN CAPITAL LETTER I WITH GRAVE
219 /* 0xCD */ (char)0x00CD, // LATIN CAPITAL LETTER I WITH ACUTE
220 /* 0xCE */ (char)0x00CE, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX
221 /* 0xCF */ (char)0x00CF, // LATIN CAPITAL LETTER I WITH DIAERESIS
222 /* 0xD0 */ (char)0x00D0, // LATIN CAPITAL LETTER ETH
223 /* 0xD1 */ (char)0x00D1, // LATIN CAPITAL LETTER N WITH TILDE
224 /* 0xD2 */ (char)0x00D2, // LATIN CAPITAL LETTER O WITH GRAVE
225 /* 0xD3 */ (char)0x00D3, // LATIN CAPITAL LETTER O WITH ACUTE
226 /* 0xD4 */ (char)0x00D4, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX
227 /* 0xD5 */ (char)0x00D5, // LATIN CAPITAL LETTER O WITH TILDE
228 /* 0xD6 */ (char)0x00D6, // LATIN CAPITAL LETTER O WITH DIAERESIS
229 /* 0xD7 */ (char)0x00D7, // MULTIPLICATION SIGN
230 /* 0xD8 */ (char)0x00D8, // LATIN CAPITAL LETTER O WITH STROKE
231 /* 0xD9 */ (char)0x00D9, // LATIN CAPITAL LETTER U WITH GRAVE
232 /* 0xDA */ (char)0x00DA, // LATIN CAPITAL LETTER U WITH ACUTE
233 /* 0xDB */ (char)0x00DB, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX
234 /* 0xDC */ (char)0x00DC, // LATIN CAPITAL LETTER U WITH DIAERESIS
235 /* 0xDD */ (char)0x00DD, // LATIN CAPITAL LETTER Y WITH ACUTE
236 /* 0xDE */ (char)0x00DE, // LATIN CAPITAL LETTER THORN
237 /* 0xDF */ (char)0x00DF, // LATIN SMALL LETTER SHARP S
238 /* 0xE0 */ (char)0x00E0, // LATIN SMALL LETTER A WITH GRAVE
239 /* 0xE1 */ (char)0x00E1, // LATIN SMALL LETTER A WITH ACUTE
240 /* 0xE2 */ (char)0x00E2, // LATIN SMALL LETTER A WITH CIRCUMFLEX
241 /* 0xE3 */ (char)0x00E3, // LATIN SMALL LETTER A WITH TILDE
242 /* 0xE4 */ (char)0x00E4, // LATIN SMALL LETTER A WITH DIAERESIS
243 /* 0xE5 */ (char)0x00E5, // LATIN SMALL LETTER A WITH RING ABOVE
244 /* 0xE6 */ (char)0x00E6, // LATIN SMALL LETTER AE
245 /* 0xE7 */ (char)0x00E7, // LATIN SMALL LETTER C WITH CEDILLA
246 /* 0xE8 */ (char)0x00E8, // LATIN SMALL LETTER E WITH GRAVE
247 /* 0xE9 */ (char)0x00E9, // LATIN SMALL LETTER E WITH ACUTE
248 /* 0xEA */ (char)0x00EA, // LATIN SMALL LETTER E WITH CIRCUMFLEX
249 /* 0xEB */ (char)0x00EB, // LATIN SMALL LETTER E WITH DIAERESIS
250 /* 0xEC */ (char)0x00EC, // LATIN SMALL LETTER I WITH GRAVE
251 /* 0xED */ (char)0x00ED, // LATIN SMALL LETTER I WITH ACUTE
252 /* 0xEE */ (char)0x00EE, // LATIN SMALL LETTER I WITH CIRCUMFLEX
253 /* 0xEF */ (char)0x00EF, // LATIN SMALL LETTER I WITH DIAERESIS
254 /* 0xF0 */ (char)0x00F0, // LATIN SMALL LETTER ETH
255 /* 0xF1 */ (char)0x00F1, // LATIN SMALL LETTER N WITH TILDE
256 /* 0xF2 */ (char)0x00F2, // LATIN SMALL LETTER O WITH GRAVE
257 /* 0xF3 */ (char)0x00F3, // LATIN SMALL LETTER O WITH ACUTE
258 /* 0xF4 */ (char)0x00F4, // LATIN SMALL LETTER O WITH CIRCUMFLEX
259 /* 0xF5 */ (char)0x00F5, // LATIN SMALL LETTER O WITH TILDE
260 /* 0xF6 */ (char)0x00F6, // LATIN SMALL LETTER O WITH DIAERESIS
261 /* 0xF7 */ (char)0x00F7, // DIVISION SIGN
262 /* 0xF8 */ (char)0x00F8, // LATIN SMALL LETTER O WITH STROKE
263 /* 0xF9 */ (char)0x00F9, // LATIN SMALL LETTER U WITH GRAVE
264 /* 0xFA */ (char)0x00FA, // LATIN SMALL LETTER U WITH ACUTE
265 /* 0xFB */ (char)0x00FB, // LATIN SMALL LETTER U WITH CIRCUMFLEX
266 /* 0xFC */ (char)0x00FC, // LATIN SMALL LETTER U WITH DIAERESIS
267 /* 0xFD */ (char)0x00FD, // LATIN SMALL LETTER Y WITH ACUTE
268 /* 0xFE */ (char)0x00FE, // LATIN SMALL LETTER THORN
269 /* 0xFF */ (char)0x00FF // LATIN SMALL LETTER Y WITH DIAERESIS
270 };
271
272 private static readonly Dictionary<char, byte> unicodeToCode;
273
274 static Windows1252()
275 {
276 byte i = 0;
277
278 unicodeToCode = new Dictionary<char, byte>();
279
280 foreach (char? ch in codeToUnicode)
281 {
282 if (ch.HasValue)
283 unicodeToCode[ch.Value] = i;
284
285 i++;
286 }
287 }
288
289 public override int GetByteCount(char[] chars, int index, int count)
290 {
291 return count;
292 }
293
294 public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
295 {
296 int c = charCount;
297
298 while (c-- > 0)
299 {
300 if (unicodeToCode.TryGetValue(chars[charIndex++], out byte b))
301 bytes[byteIndex++] = b;
302 else
303 bytes[byteIndex++] = (byte)'?';
304 }
305
306 return charCount;
307 }
308
309 public override int GetCharCount(byte[] bytes, int index, int count)
310 {
311 return count;
312 }
313
314 public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
315 {
316 int c = byteCount;
317 char? ch;
318
319 while (c-- > 0)
320 {
321 ch = codeToUnicode[bytes[byteIndex++]];
322 if (ch.HasValue)
323 chars[charIndex++] = ch.Value;
324 else
325 chars[charIndex++] = '?';
326 }
327
328 return byteCount;
329 }
330
331 public override int GetMaxByteCount(int charCount)
332 {
333 return charCount;
334 }
335
336 public override int GetMaxCharCount(int byteCount)
337 {
338 return byteCount;
339 }
340 }
341}