/* * Copyright 2001 Perforce Software. All rights reserved. * */ /* * simplecvt.cc - Character set conversion code base class * * This is seporate from basecvt.cc so that unless you are really * possibly going to do character set conversions you will not link * in this code. */ #include <stdhdrs.h> #include "i18napi.h" #include "charcvt.h" #include "charman.h" CharSetCvt * CharSetCvtUTF8toSimple::Clone() { return new CharSetCvtUTF8toSimple(charinfo); } CharSetCvt * CharSetCvtUTF8toSimple::ReverseCvt() { return new CharSetCvtSimpletoUTF8(charinfo); } int CharSetCvtUTF8toSimple::Cvt(const char **sourcestart, const char *sourceend, char **targetstart, char *targetend) { const MapEnt *map = charinfo->toMap; int mapsize = charinfo->toMapSize; unsigned int v, oldv; while (*sourcestart < sourceend && *targetstart < targetend) { v = **sourcestart & 0xff; int l; if (v & 0x80) { l = bytesFromUTF8[v]; if (l + *sourcestart >= sourceend) { lasterr = PARTIALCHAR; return 0; } switch (l) { case 2: v <<= 6; v += 0xff & *++*sourcestart; case 1: v <<= 6; v += 0xff & *++*sourcestart; v -= offsetsFromUTF8[l]; # ifdef STRICT_UTF8 if( v < minimumFromUTF8[l] ) { // illegal over long UTF8 sequence lasterr = NOMAPPING; *sourcestart -= l; return 0; } # endif // at this point v is UCS 2 oldv = v; if (v >= 0x80) v = MapThru(v, map, mapsize, 0xfffd); if (v < 0x100) { **targetstart = v; break; } if (checkBOM && oldv == 0xfeff) { // suppress BOM checkBOM = 0; ++*sourcestart; continue; } *sourcestart -= l; // note fall through default: lasterr = NOMAPPING; return 0; } } else { **targetstart = v; } ++charcnt; if( v == '\n' ) { ++linecnt; charcnt = 0; } ++*sourcestart; ++*targetstart; checkBOM = 0; } return 0; } CharSetCvt * CharSetCvtSimpletoUTF8::Clone() { return new CharSetCvtSimpletoUTF8(charinfo); } CharSetCvt * CharSetCvtSimpletoUTF8::ReverseCvt() { return new CharSetCvtUTF8toSimple(charinfo); } int CharSetCvtSimpletoUTF8::Cvt(const char **sourcestart, const char *sourceend, char **targetstart, char *targetend) { const unsigned short *map = charinfo->fromMap; int off = charinfo->fromOffset; unsigned int v; while (*sourcestart < sourceend && *targetstart < targetend) { v = **sourcestart & 0xff; if (v & 0x80) { if( v < off ) { lasterr = NOMAPPING; break; } v = map[ v - off ]; // emit UTF8 of v if (v >= 0x800) { if (v == 0xfffd) { // 0xfffd is specified by unicode as a replacement // character when a mapping fails... seems good here lasterr = NOMAPPING; break; } if (2 + *targetstart >= targetend) { lasterr = PARTIALCHAR; break; } **targetstart = 0xe0 | (v >> 12); *++*targetstart = 0x80 | ((v >> 6) & 0x3f); *++*targetstart = 0x80 | (v & 0x3f); } else // v >= 0x80 { if (1 + *targetstart >= targetend) { lasterr = PARTIALCHAR; break; } **targetstart = 0xc0 | (v >> 6); *++*targetstart = 0x80 | (v & 0x3f); } } else **targetstart = v; ++charcnt; if( v == '\n' ) { ++linecnt; charcnt = 0; } ++*targetstart; ++*sourcestart; } return 0; } static const unsigned short from437[] = { 0x00c7, // 0x80 0x00fc, // 0x81 0x00e9, // 0x82 0x00e2, // 0x83 0x00e4, // 0x84 0x00e0, // 0x85 0x00e5, // 0x86 0x00e7, // 0x87 0x00ea, // 0x88 0x00eb, // 0x89 0x00e8, // 0x8a 0x00ef, // 0x8b 0x00ee, // 0x8c 0x00ec, // 0x8d 0x00c4, // 0x8e 0x00c5, // 0x8f 0x00c9, // 0x90 0x00e6, // 0x91 0x00c6, // 0x92 0x00f4, // 0x93 0x00f6, // 0x94 0x00f2, // 0x95 0x00fb, // 0x96 0x00f9, // 0x97 0x00ff, // 0x98 0x00d6, // 0x99 0x00dc, // 0x9a 0x00a2, // 0x9b 0x00a3, // 0x9c 0x00a5, // 0x9d 0x20a7, // 0x9e 0x0192, // 0x9f 0x00e1, // 0xa0 0x00ed, // 0xa1 0x00f3, // 0xa2 0x00fa, // 0xa3 0x00f1, // 0xa4 0x00d1, // 0xa5 0x00aa, // 0xa6 0x00ba, // 0xa7 0x00bf, // 0xa8 0x2310, // 0xa9 0x00ac, // 0xaa 0x00bd, // 0xab 0x00bc, // 0xac 0x00a1, // 0xad 0x00ab, // 0xae 0x00bb, // 0xaf 0x2591, // 0xb0 0x2592, // 0xb1 0x2593, // 0xb2 0x2502, // 0xb3 0x2524, // 0xb4 0x2561, // 0xb5 0x2562, // 0xb6 0x2556, // 0xb7 0x2555, // 0xb8 0x2563, // 0xb9 0x2551, // 0xba 0x2557, // 0xbb 0x255d, // 0xbc 0x255c, // 0xbd 0x255b, // 0xbe 0x2510, // 0xbf 0x2514, // 0xc0 0x2534, // 0xc1 0x252c, // 0xc2 0x251c, // 0xc3 0x2500, // 0xc4 0x253c, // 0xc5 0x255e, // 0xc6 0x255f, // 0xc7 0x255a, // 0xc8 0x2554, // 0xc9 0x2569, // 0xca 0x2566, // 0xcb 0x2560, // 0xcc 0x2550, // 0xcd 0x256c, // 0xce 0x2567, // 0xcf 0x2568, // 0xd0 0x2564, // 0xd1 0x2565, // 0xd2 0x2559, // 0xd3 0x2558, // 0xd4 0x2552, // 0xd5 0x2553, // 0xd6 0x256b, // 0xd7 0x256a, // 0xd8 0x2518, // 0xd9 0x250c, // 0xda 0x2588, // 0xdb 0x2584, // 0xdc 0x258c, // 0xdd 0x2590, // 0xde 0x2580, // 0xdf 0x03b1, // 0xe0 0x00df, // 0xe1 0x0393, // 0xe2 0x03c0, // 0xe3 0x03a3, // 0xe4 0x03c3, // 0xe5 0x00b5, // 0xe6 0x03c4, // 0xe7 0x03a6, // 0xe8 0x0398, // 0xe9 0x03a9, // 0xea 0x03b4, // 0xeb 0x221e, // 0xec 0x03c6, // 0xed 0x03b5, // 0xee 0x2229, // 0xef 0x2261, // 0xf0 0x00b1, // 0xf1 0x2265, // 0xf2 0x2264, // 0xf3 0x2320, // 0xf4 0x2321, // 0xf5 0x00f7, // 0xf6 0x2248, // 0xf7 0x00b0, // 0xf8 0x2219, // 0xf9 0x00b7, // 0xfa 0x221a, // 0xfb 0x207f, // 0xfc 0x00b2, // 0xfd 0x25a0, // 0xfe 0x00a0 // 0xff }; static const CharSetCvt::MapEnt to437[] = { 0x00a0, 0xff, 0x00a1, 0xad, 0x00a2, 0x9b, 0x00a3, 0x9c, 0x00a5, 0x9d, 0x00aa, 0xa6, 0x00ab, 0xae, 0x00ac, 0xaa, 0x00b0, 0xf8, 0x00b1, 0xf1, 0x00b2, 0xfd, 0x00b5, 0xe6, 0x00b7, 0xfa, 0x00ba, 0xa7, 0x00bb, 0xaf, 0x00bc, 0xac, 0x00bd, 0xab, 0x00bf, 0xa8, 0x00c4, 0x8e, 0x00c5, 0x8f, 0x00c6, 0x92, 0x00c7, 0x80, 0x00c9, 0x90, 0x00d1, 0xa5, 0x00d6, 0x99, 0x00dc, 0x9a, 0x00df, 0xe1, 0x00e0, 0x85, 0x00e1, 0xa0, 0x00e2, 0x83, 0x00e4, 0x84, 0x00e5, 0x86, 0x00e6, 0x91, 0x00e7, 0x87, 0x00e8, 0x8a, 0x00e9, 0x82, 0x00ea, 0x88, 0x00eb, 0x89, 0x00ec, 0x8d, 0x00ed, 0xa1, 0x00ee, 0x8c, 0x00ef, 0x8b, 0x00f1, 0xa4, 0x00f2, 0x95, 0x00f3, 0xa2, 0x00f4, 0x93, 0x00f6, 0x94, 0x00f7, 0xf6, 0x00f9, 0x97, 0x00fa, 0xa3, 0x00fb, 0x96, 0x00fc, 0x81, 0x00ff, 0x98, 0x0192, 0x9f, 0x0393, 0xe2, 0x0398, 0xe9, 0x03a3, 0xe4, 0x03a6, 0xe8, 0x03a9, 0xea, 0x03b1, 0xe0, 0x03b4, 0xeb, 0x03b5, 0xee, 0x03c0, 0xe3, 0x03c3, 0xe5, 0x03c4, 0xe7, 0x03c6, 0xed, 0x207f, 0xfc, 0x20a7, 0x9e, 0x2219, 0xf9, 0x221a, 0xfb, 0x221e, 0xec, 0x2229, 0xef, 0x2248, 0xf7, 0x2261, 0xf0, 0x2264, 0xf3, 0x2265, 0xf2, 0x2310, 0xa9, 0x2320, 0xf4, 0x2321, 0xf5, 0x2500, 0xc4, 0x2502, 0xb3, 0x250c, 0xda, 0x2510, 0xbf, 0x2514, 0xc0, 0x2518, 0xd9, 0x251c, 0xc3, 0x2524, 0xb4, 0x252c, 0xc2, 0x2534, 0xc1, 0x253c, 0xc5, 0x2550, 0xcd, 0x2551, 0xba, 0x2552, 0xd5, 0x2553, 0xd6, 0x2554, 0xc9, 0x2555, 0xb8, 0x2556, 0xb7, 0x2557, 0xbb, 0x2558, 0xd4, 0x2559, 0xd3, 0x255a, 0xc8, 0x255b, 0xbe, 0x255c, 0xbd, 0x255d, 0xbc, 0x255e, 0xc6, 0x255f, 0xc7, 0x2560, 0xcc, 0x2561, 0xb5, 0x2562, 0xb6, 0x2563, 0xb9, 0x2564, 0xd1, 0x2565, 0xd2, 0x2566, 0xcb, 0x2567, 0xcf, 0x2568, 0xd0, 0x2569, 0xca, 0x256a, 0xd8, 0x256b, 0xd7, 0x256c, 0xce, 0x2580, 0xdf, 0x2584, 0xdc, 0x2588, 0xdb, 0x258c, 0xdd, 0x2590, 0xde, 0x2591, 0xb0, 0x2592, 0xb1, 0x2593, 0xb2, 0x25a0, 0xfe }; static const unsigned short from850[] = { 0x00c7, // 0x80 LATIN CAPITAL LETTER C WITH CEDILLA 0x00fc, // 0x81 LATIN SMALL LETTER U WITH DIAERESIS 0x00e9, // 0x82 LATIN SMALL LETTER E WITH ACUTE 0x00e2, // 0x83 LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00e4, // 0x84 LATIN SMALL LETTER A WITH DIAERESIS 0x00e0, // 0x85 LATIN SMALL LETTER A WITH GRAVE 0x00e5, // 0x86 LATIN SMALL LETTER A WITH RING ABOVE 0x00e7, // 0x87 LATIN SMALL LETTER C WITH CEDILLA 0x00ea, // 0x88 LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00eb, // 0x89 LATIN SMALL LETTER E WITH DIAERESIS 0x00e8, // 0x8a LATIN SMALL LETTER E WITH GRAVE 0x00ef, // 0x8b LATIN SMALL LETTER I WITH DIAERESIS 0x00ee, // 0x8c LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00ec, // 0x8d LATIN SMALL LETTER I WITH GRAVE 0x00c4, // 0x8e LATIN CAPITAL LETTER A WITH DIAERESIS 0x00c5, // 0x8f LATIN CAPITAL LETTER A WITH RING ABOVE 0x00c9, // 0x90 LATIN CAPITAL LETTER E WITH ACUTE 0x00e6, // 0x91 LATIN SMALL LIGATURE AE 0x00c6, // 0x92 LATIN CAPITAL LIGATURE AE 0x00f4, // 0x93 LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00f6, // 0x94 LATIN SMALL LETTER O WITH DIAERESIS 0x00f2, // 0x95 LATIN SMALL LETTER O WITH GRAVE 0x00fb, // 0x96 LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00f9, // 0x97 LATIN SMALL LETTER U WITH GRAVE 0x00ff, // 0x98 LATIN SMALL LETTER Y WITH DIAERESIS 0x00d6, // 0x99 LATIN CAPITAL LETTER O WITH DIAERESIS 0x00dc, // 0x9a LATIN CAPITAL LETTER U WITH DIAERESIS 0x00f8, // 0x9b LATIN SMALL LETTER O WITH STROKE 0x00a3, // 0x9c POUND SIGN 0x00d8, // 0x9d LATIN CAPITAL LETTER O WITH STROKE 0x00d7, // 0x9e MULTIPLICATION SIGN 0x0192, // 0x9f LATIN SMALL LETTER F WITH HOOK 0x00e1, // 0xa0 LATIN SMALL LETTER A WITH ACUTE 0x00ed, // 0xa1 LATIN SMALL LETTER I WITH ACUTE 0x00f3, // 0xa2 LATIN SMALL LETTER O WITH ACUTE 0x00fa, // 0xa3 LATIN SMALL LETTER U WITH ACUTE 0x00f1, // 0xa4 LATIN SMALL LETTER N WITH TILDE 0x00d1, // 0xa5 LATIN CAPITAL LETTER N WITH TILDE 0x00aa, // 0xa6 FEMININE ORDINAL INDICATOR 0x00ba, // 0xa7 MASCULINE ORDINAL INDICATOR 0x00bf, // 0xa8 INVERTED QUESTION MARK 0x00ae, // 0xa9 REGISTERED SIGN 0x00ac, // 0xaa NOT SIGN 0x00bd, // 0xab VULGAR FRACTION ONE HALF 0x00bc, // 0xac VULGAR FRACTION ONE QUARTER 0x00a1, // 0xad INVERTED EXCLAMATION MARK 0x00ab, // 0xae LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00bb, // 0xaf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x2591, // 0xb0 LIGHT SHADE 0x2592, // 0xb1 MEDIUM SHADE 0x2593, // 0xb2 DARK SHADE 0x2502, // 0xb3 BOX DRAWINGS LIGHT VERTICAL 0x2524, // 0xb4 BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x00c1, // 0xb5 LATIN CAPITAL LETTER A WITH ACUTE 0x00c2, // 0xb6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00c0, // 0xb7 LATIN CAPITAL LETTER A WITH GRAVE 0x00a9, // 0xb8 COPYRIGHT SIGN 0x2563, // 0xb9 BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2551, // 0xba BOX DRAWINGS DOUBLE VERTICAL 0x2557, // 0xbb BOX DRAWINGS DOUBLE DOWN AND LEFT 0x255d, // 0xbc BOX DRAWINGS DOUBLE UP AND LEFT 0x00a2, // 0xbd CENT SIGN 0x00a5, // 0xbe YEN SIGN 0x2510, // 0xbf BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, // 0xc0 BOX DRAWINGS LIGHT UP AND RIGHT 0x2534, // 0xc1 BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x252c, // 0xc2 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x251c, // 0xc3 BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2500, // 0xc4 BOX DRAWINGS LIGHT HORIZONTAL 0x253c, // 0xc5 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x00e3, // 0xc6 LATIN SMALL LETTER A WITH TILDE 0x00c3, // 0xc7 LATIN CAPITAL LETTER A WITH TILDE 0x255a, // 0xc8 BOX DRAWINGS DOUBLE UP AND RIGHT 0x2554, // 0xc9 BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2569, // 0xca BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x2566, // 0xcb BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2560, // 0xcc BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2550, // 0xcd BOX DRAWINGS DOUBLE HORIZONTAL 0x256c, // 0xce BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x00a4, // 0xcf CURRENCY SIGN 0x00f0, // 0xd0 LATIN SMALL LETTER ETH 0x00d0, // 0xd1 LATIN CAPITAL LETTER ETH 0x00ca, // 0xd2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00cb, // 0xd3 LATIN CAPITAL LETTER E WITH DIAERESIS 0x00c8, // 0xd4 LATIN CAPITAL LETTER E WITH GRAVE 0x0131, // 0xd5 LATIN SMALL LETTER DOTLESS I 0x00cd, // 0xd6 LATIN CAPITAL LETTER I WITH ACUTE 0x00ce, // 0xd7 LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00cf, // 0xd8 LATIN CAPITAL LETTER I WITH DIAERESIS 0x2518, // 0xd9 BOX DRAWINGS LIGHT UP AND LEFT 0x250c, // 0xda BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2588, // 0xdb FULL BLOCK 0x2584, // 0xdc LOWER HALF BLOCK 0x00a6, // 0xdd BROKEN BAR 0x00cc, // 0xde LATIN CAPITAL LETTER I WITH GRAVE 0x2580, // 0xdf UPPER HALF BLOCK 0x00d3, // 0xe0 LATIN CAPITAL LETTER O WITH ACUTE 0x00df, // 0xe1 LATIN SMALL LETTER SHARP S 0x00d4, // 0xe2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00d2, // 0xe3 LATIN CAPITAL LETTER O WITH GRAVE 0x00f5, // 0xe4 LATIN SMALL LETTER O WITH TILDE 0x00d5, // 0xe5 LATIN CAPITAL LETTER O WITH TILDE 0x00b5, // 0xe6 MICRO SIGN 0x00fe, // 0xe7 LATIN SMALL LETTER THORN 0x00de, // 0xe8 LATIN CAPITAL LETTER THORN 0x00da, // 0xe9 LATIN CAPITAL LETTER U WITH ACUTE 0x00db, // 0xea LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00d9, // 0xeb LATIN CAPITAL LETTER U WITH GRAVE 0x00fd, // 0xec LATIN SMALL LETTER Y WITH ACUTE 0x00dd, // 0xed LATIN CAPITAL LETTER Y WITH ACUTE 0x00af, // 0xee MACRON 0x00b4, // 0xef ACUTE ACCENT 0x00ad, // 0xf0 SOFT HYPHEN 0x00b1, // 0xf1 PLUS-MINUS SIGN 0x2017, // 0xf2 DOUBLE LOW LINE 0x00be, // 0xf3 VULGAR FRACTION THREE QUARTERS 0x00b6, // 0xf4 PILCROW SIGN 0x00a7, // 0xf5 SECTION SIGN 0x00f7, // 0xf6 DIVISION SIGN 0x00b8, // 0xf7 CEDILLA 0x00b0, // 0xf8 DEGREE SIGN 0x00a8, // 0xf9 DIAERESIS 0x00b7, // 0xfa MIDDLE DOT 0x00b9, // 0xfb SUPERSCRIPT ONE 0x00b3, // 0xfc SUPERSCRIPT THREE 0x00b2, // 0xfd SUPERSCRIPT TWO 0x25a0, // 0xfe BLACK SQUARE 0x00a0 // 0xff NO-BREAK SPACE }; static const CharSetCvt::MapEnt to850[] = { 0x00a0, 0xff, // NO-BREAK SPACE 0x00a1, 0xad, // INVERTED EXCLAMATION MARK 0x00a2, 0xbd, // CENT SIGN 0x00a3, 0x9c, // POUND SIGN 0x00a4, 0xcf, // CURRENCY SIGN 0x00a5, 0xbe, // YEN SIGN 0x00a6, 0xdd, // BROKEN BAR 0x00a7, 0xf5, // SECTION SIGN 0x00a8, 0xf9, // DIAERESIS 0x00a9, 0xb8, // COPYRIGHT SIGN 0x00aa, 0xa6, // FEMININE ORDINAL INDICATOR 0x00ab, 0xae, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00ac, 0xaa, // NOT SIGN 0x00ad, 0xf0, // SOFT HYPHEN 0x00ae, 0xa9, // REGISTERED SIGN 0x00af, 0xee, // MACRON 0x00b0, 0xf8, // DEGREE SIGN 0x00b1, 0xf1, // PLUS-MINUS SIGN 0x00b2, 0xfd, // SUPERSCRIPT TWO 0x00b3, 0xfc, // SUPERSCRIPT THREE 0x00b4, 0xef, // ACUTE ACCENT 0x00b5, 0xe6, // MICRO SIGN 0x00b6, 0xf4, // PILCROW SIGN 0x00b7, 0xfa, // MIDDLE DOT 0x00b8, 0xf7, // CEDILLA 0x00b9, 0xfb, // SUPERSCRIPT ONE 0x00ba, 0xa7, // MASCULINE ORDINAL INDICATOR 0x00bb, 0xaf, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00bc, 0xac, // VULGAR FRACTION ONE QUARTER 0x00bd, 0xab, // VULGAR FRACTION ONE HALF 0x00be, 0xf3, // VULGAR FRACTION THREE QUARTERS 0x00bf, 0xa8, // INVERTED QUESTION MARK 0x00c0, 0xb7, // LATIN CAPITAL LETTER A WITH GRAVE 0x00c1, 0xb5, // LATIN CAPITAL LETTER A WITH ACUTE 0x00c2, 0xb6, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00c3, 0xc7, // LATIN CAPITAL LETTER A WITH TILDE 0x00c4, 0x8e, // LATIN CAPITAL LETTER A WITH DIAERESIS 0x00c5, 0x8f, // LATIN CAPITAL LETTER A WITH RING ABOVE 0x00c6, 0x92, // LATIN CAPITAL LIGATURE AE 0x00c7, 0x80, // LATIN CAPITAL LETTER C WITH CEDILLA 0x00c8, 0xd4, // LATIN CAPITAL LETTER E WITH GRAVE 0x00c9, 0x90, // LATIN CAPITAL LETTER E WITH ACUTE 0x00ca, 0xd2, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00cb, 0xd3, // LATIN CAPITAL LETTER E WITH DIAERESIS 0x00cc, 0xde, // LATIN CAPITAL LETTER I WITH GRAVE 0x00cd, 0xd6, // LATIN CAPITAL LETTER I WITH ACUTE 0x00ce, 0xd7, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00cf, 0xd8, // LATIN CAPITAL LETTER I WITH DIAERESIS 0x00d0, 0xd1, // LATIN CAPITAL LETTER ETH 0x00d1, 0xa5, // LATIN CAPITAL LETTER N WITH TILDE 0x00d2, 0xe3, // LATIN CAPITAL LETTER O WITH GRAVE 0x00d3, 0xe0, // LATIN CAPITAL LETTER O WITH ACUTE 0x00d4, 0xe2, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00d5, 0xe5, // LATIN CAPITAL LETTER O WITH TILDE 0x00d6, 0x99, // LATIN CAPITAL LETTER O WITH DIAERESIS 0x00d7, 0x9e, // MULTIPLICATION SIGN 0x00d8, 0x9d, // LATIN CAPITAL LETTER O WITH STROKE 0x00d9, 0xeb, // LATIN CAPITAL LETTER U WITH GRAVE 0x00da, 0xe9, // LATIN CAPITAL LETTER U WITH ACUTE 0x00db, 0xea, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00dc, 0x9a, // LATIN CAPITAL LETTER U WITH DIAERESIS 0x00dd, 0xed, // LATIN CAPITAL LETTER Y WITH ACUTE 0x00de, 0xe8, // LATIN CAPITAL LETTER THORN 0x00df, 0xe1, // LATIN SMALL LETTER SHARP S 0x00e0, 0x85, // LATIN SMALL LETTER A WITH GRAVE 0x00e1, 0xa0, // LATIN SMALL LETTER A WITH ACUTE 0x00e2, 0x83, // LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00e3, 0xc6, // LATIN SMALL LETTER A WITH TILDE 0x00e4, 0x84, // LATIN SMALL LETTER A WITH DIAERESIS 0x00e5, 0x86, // LATIN SMALL LETTER A WITH RING ABOVE 0x00e6, 0x91, // LATIN SMALL LIGATURE AE 0x00e7, 0x87, // LATIN SMALL LETTER C WITH CEDILLA 0x00e8, 0x8a, // LATIN SMALL LETTER E WITH GRAVE 0x00e9, 0x82, // LATIN SMALL LETTER E WITH ACUTE 0x00ea, 0x88, // LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00eb, 0x89, // LATIN SMALL LETTER E WITH DIAERESIS 0x00ec, 0x8d, // LATIN SMALL LETTER I WITH GRAVE 0x00ed, 0xa1, // LATIN SMALL LETTER I WITH ACUTE 0x00ee, 0x8c, // LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00ef, 0x8b, // LATIN SMALL LETTER I WITH DIAERESIS 0x00f0, 0xd0, // LATIN SMALL LETTER ETH 0x00f1, 0xa4, // LATIN SMALL LETTER N WITH TILDE 0x00f2, 0x95, // LATIN SMALL LETTER O WITH GRAVE 0x00f3, 0xa2, // LATIN SMALL LETTER O WITH ACUTE 0x00f4, 0x93, // LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00f5, 0xe4, // LATIN SMALL LETTER O WITH TILDE 0x00f6, 0x94, // LATIN SMALL LETTER O WITH DIAERESIS 0x00f7, 0xf6, // DIVISION SIGN 0x00f8, 0x9b, // LATIN SMALL LETTER O WITH STROKE 0x00f9, 0x97, // LATIN SMALL LETTER U WITH GRAVE 0x00fa, 0xa3, // LATIN SMALL LETTER U WITH ACUTE 0x00fb, 0x96, // LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00fc, 0x81, // LATIN SMALL LETTER U WITH DIAERESIS 0x00fd, 0xec, // LATIN SMALL LETTER Y WITH ACUTE 0x00fe, 0xe7, // LATIN SMALL LETTER THORN 0x00ff, 0x98, // LATIN SMALL LETTER Y WITH DIAERESIS 0x0131, 0xd5, // LATIN SMALL LETTER DOTLESS I 0x0192, 0x9f, // LATIN SMALL LETTER F WITH HOOK 0x2017, 0xf2, // DOUBLE LOW LINE 0x2500, 0xc4, // BOX DRAWINGS LIGHT HORIZONTAL 0x2502, 0xb3, // BOX DRAWINGS LIGHT VERTICAL 0x250c, 0xda, // BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2510, 0xbf, // BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, 0xc0, // BOX DRAWINGS LIGHT UP AND RIGHT 0x2518, 0xd9, // BOX DRAWINGS LIGHT UP AND LEFT 0x251c, 0xc3, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2524, 0xb4, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x252c, 0xc2, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x2534, 0xc1, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x253c, 0xc5, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x2550, 0xcd, // BOX DRAWINGS DOUBLE HORIZONTAL 0x2551, 0xba, // BOX DRAWINGS DOUBLE VERTICAL 0x2554, 0xc9, // BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2557, 0xbb, // BOX DRAWINGS DOUBLE DOWN AND LEFT 0x255a, 0xc8, // BOX DRAWINGS DOUBLE UP AND RIGHT 0x255d, 0xbc, // BOX DRAWINGS DOUBLE UP AND LEFT 0x2560, 0xcc, // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2563, 0xb9, // BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2566, 0xcb, // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2569, 0xca, // BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x256c, 0xce, // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x2580, 0xdf, // UPPER HALF BLOCK 0x2584, 0xdc, // LOWER HALF BLOCK 0x2588, 0xdb, // FULL BLOCK 0x2591, 0xb0, // LIGHT SHADE 0x2592, 0xb1, // MEDIUM SHADE 0x2593, 0xb2, // DARK SHADE 0x25a0, 0xfe, // BLACK SQUARE }; static const unsigned short from858[] = { 0x00c7, // 0x80 LATIN CAPITAL LETTER C WITH CEDILLA 0x00fc, // 0x81 LATIN SMALL LETTER U WITH DIAERESIS 0x00e9, // 0x82 LATIN SMALL LETTER E WITH ACUTE 0x00e2, // 0x83 LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00e4, // 0x84 LATIN SMALL LETTER A WITH DIAERESIS 0x00e0, // 0x85 LATIN SMALL LETTER A WITH GRAVE 0x00e5, // 0x86 LATIN SMALL LETTER A WITH RING ABOVE 0x00e7, // 0x87 LATIN SMALL LETTER C WITH CEDILLA 0x00ea, // 0x88 LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00eb, // 0x89 LATIN SMALL LETTER E WITH DIAERESIS 0x00e8, // 0x8a LATIN SMALL LETTER E WITH GRAVE 0x00ef, // 0x8b LATIN SMALL LETTER I WITH DIAERESIS 0x00ee, // 0x8c LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00ec, // 0x8d LATIN SMALL LETTER I WITH GRAVE 0x00c4, // 0x8e LATIN CAPITAL LETTER A WITH DIAERESIS 0x00c5, // 0x8f LATIN CAPITAL LETTER A WITH RING ABOVE 0x00c9, // 0x90 LATIN CAPITAL LETTER E WITH ACUTE 0x00e6, // 0x91 LATIN SMALL LIGATURE AE 0x00c6, // 0x92 LATIN CAPITAL LIGATURE AE 0x00f4, // 0x93 LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00f6, // 0x94 LATIN SMALL LETTER O WITH DIAERESIS 0x00f2, // 0x95 LATIN SMALL LETTER O WITH GRAVE 0x00fb, // 0x96 LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00f9, // 0x97 LATIN SMALL LETTER U WITH GRAVE 0x00ff, // 0x98 LATIN SMALL LETTER Y WITH DIAERESIS 0x00d6, // 0x99 LATIN CAPITAL LETTER O WITH DIAERESIS 0x00dc, // 0x9a LATIN CAPITAL LETTER U WITH DIAERESIS 0x00f8, // 0x9b LATIN SMALL LETTER O WITH STROKE 0x00a3, // 0x9c POUND SIGN 0x00d8, // 0x9d LATIN CAPITAL LETTER O WITH STROKE 0x00d7, // 0x9e MULTIPLICATION SIGN 0x0192, // 0x9f LATIN SMALL LETTER F WITH HOOK 0x00e1, // 0xa0 LATIN SMALL LETTER A WITH ACUTE 0x00ed, // 0xa1 LATIN SMALL LETTER I WITH ACUTE 0x00f3, // 0xa2 LATIN SMALL LETTER O WITH ACUTE 0x00fa, // 0xa3 LATIN SMALL LETTER U WITH ACUTE 0x00f1, // 0xa4 LATIN SMALL LETTER N WITH TILDE 0x00d1, // 0xa5 LATIN CAPITAL LETTER N WITH TILDE 0x00aa, // 0xa6 FEMININE ORDINAL INDICATOR 0x00ba, // 0xa7 MASCULINE ORDINAL INDICATOR 0x00bf, // 0xa8 INVERTED QUESTION MARK 0x00ae, // 0xa9 REGISTERED SIGN 0x00ac, // 0xaa NOT SIGN 0x00bd, // 0xab VULGAR FRACTION ONE HALF 0x00bc, // 0xac VULGAR FRACTION ONE QUARTER 0x00a1, // 0xad INVERTED EXCLAMATION MARK 0x00ab, // 0xae LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00bb, // 0xaf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x2591, // 0xb0 LIGHT SHADE 0x2592, // 0xb1 MEDIUM SHADE 0x2593, // 0xb2 DARK SHADE 0x2502, // 0xb3 BOX DRAWINGS LIGHT VERTICAL 0x2524, // 0xb4 BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x00c1, // 0xb5 LATIN CAPITAL LETTER A WITH ACUTE 0x00c2, // 0xb6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00c0, // 0xb7 LATIN CAPITAL LETTER A WITH GRAVE 0x00a9, // 0xb8 COPYRIGHT SIGN 0x2563, // 0xb9 BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2551, // 0xba BOX DRAWINGS DOUBLE VERTICAL 0x2557, // 0xbb BOX DRAWINGS DOUBLE DOWN AND LEFT 0x255d, // 0xbc BOX DRAWINGS DOUBLE UP AND LEFT 0x00a2, // 0xbd CENT SIGN 0x00a5, // 0xbe YEN SIGN 0x2510, // 0xbf BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, // 0xc0 BOX DRAWINGS LIGHT UP AND RIGHT 0x2534, // 0xc1 BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x252c, // 0xc2 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x251c, // 0xc3 BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2500, // 0xc4 BOX DRAWINGS LIGHT HORIZONTAL 0x253c, // 0xc5 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x00e3, // 0xc6 LATIN SMALL LETTER A WITH TILDE 0x00c3, // 0xc7 LATIN CAPITAL LETTER A WITH TILDE 0x255a, // 0xc8 BOX DRAWINGS DOUBLE UP AND RIGHT 0x2554, // 0xc9 BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2569, // 0xca BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x2566, // 0xcb BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2560, // 0xcc BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2550, // 0xcd BOX DRAWINGS DOUBLE HORIZONTAL 0x256c, // 0xce BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x00a4, // 0xcf CURRENCY SIGN 0x00f0, // 0xd0 LATIN SMALL LETTER ETH 0x00d0, // 0xd1 LATIN CAPITAL LETTER ETH 0x00ca, // 0xd2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00cb, // 0xd3 LATIN CAPITAL LETTER E WITH DIAERESIS 0x00c8, // 0xd4 LATIN CAPITAL LETTER E WITH GRAVE 0x20ac, // 0xd5 EURO SIGN 0x00cd, // 0xd6 LATIN CAPITAL LETTER I WITH ACUTE 0x00ce, // 0xd7 LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00cf, // 0xd8 LATIN CAPITAL LETTER I WITH DIAERESIS 0x2518, // 0xd9 BOX DRAWINGS LIGHT UP AND LEFT 0x250c, // 0xda BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2588, // 0xdb FULL BLOCK 0x2584, // 0xdc LOWER HALF BLOCK 0x00a6, // 0xdd BROKEN BAR 0x00cc, // 0xde LATIN CAPITAL LETTER I WITH GRAVE 0x2580, // 0xdf UPPER HALF BLOCK 0x00d3, // 0xe0 LATIN CAPITAL LETTER O WITH ACUTE 0x00df, // 0xe1 LATIN SMALL LETTER SHARP S 0x00d4, // 0xe2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00d2, // 0xe3 LATIN CAPITAL LETTER O WITH GRAVE 0x00f5, // 0xe4 LATIN SMALL LETTER O WITH TILDE 0x00d5, // 0xe5 LATIN CAPITAL LETTER O WITH TILDE 0x00b5, // 0xe6 MICRO SIGN 0x00fe, // 0xe7 LATIN SMALL LETTER THORN 0x00de, // 0xe8 LATIN CAPITAL LETTER THORN 0x00da, // 0xe9 LATIN CAPITAL LETTER U WITH ACUTE 0x00db, // 0xea LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00d9, // 0xeb LATIN CAPITAL LETTER U WITH GRAVE 0x00fd, // 0xec LATIN SMALL LETTER Y WITH ACUTE 0x00dd, // 0xed LATIN CAPITAL LETTER Y WITH ACUTE 0x00af, // 0xee MACRON 0x00b4, // 0xef ACUTE ACCENT 0x00ad, // 0xf0 SOFT HYPHEN 0x00b1, // 0xf1 PLUS-MINUS SIGN 0x2017, // 0xf2 DOUBLE LOW LINE 0x00be, // 0xf3 VULGAR FRACTION THREE QUARTERS 0x00b6, // 0xf4 PILCROW SIGN 0x00a7, // 0xf5 SECTION SIGN 0x00f7, // 0xf6 DIVISION SIGN 0x00b8, // 0xf7 CEDILLA 0x00b0, // 0xf8 DEGREE SIGN 0x00a8, // 0xf9 DIAERESIS 0x00b7, // 0xfa MIDDLE DOT 0x00b9, // 0xfb SUPERSCRIPT ONE 0x00b3, // 0xfc SUPERSCRIPT THREE 0x00b2, // 0xfd SUPERSCRIPT TWO 0x25a0, // 0xfe BLACK SQUARE 0x00a0 // 0xff NO-BREAK SPACE }; static const CharSetCvt::MapEnt to858[] = { 0x00a0, 0xff, // NO-BREAK SPACE 0x00a1, 0xad, // INVERTED EXCLAMATION MARK 0x00a2, 0xbd, // CENT SIGN 0x00a3, 0x9c, // POUND SIGN 0x00a4, 0xcf, // CURRENCY SIGN 0x00a5, 0xbe, // YEN SIGN 0x00a6, 0xdd, // BROKEN BAR 0x00a7, 0xf5, // SECTION SIGN 0x00a8, 0xf9, // DIAERESIS 0x00a9, 0xb8, // COPYRIGHT SIGN 0x00aa, 0xa6, // FEMININE ORDINAL INDICATOR 0x00ab, 0xae, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00ac, 0xaa, // NOT SIGN 0x00ad, 0xf0, // SOFT HYPHEN 0x00ae, 0xa9, // REGISTERED SIGN 0x00af, 0xee, // MACRON 0x00b0, 0xf8, // DEGREE SIGN 0x00b1, 0xf1, // PLUS-MINUS SIGN 0x00b2, 0xfd, // SUPERSCRIPT TWO 0x00b3, 0xfc, // SUPERSCRIPT THREE 0x00b4, 0xef, // ACUTE ACCENT 0x00b5, 0xe6, // MICRO SIGN 0x00b6, 0xf4, // PILCROW SIGN 0x00b7, 0xfa, // MIDDLE DOT 0x00b8, 0xf7, // CEDILLA 0x00b9, 0xfb, // SUPERSCRIPT ONE 0x00ba, 0xa7, // MASCULINE ORDINAL INDICATOR 0x00bb, 0xaf, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00bc, 0xac, // VULGAR FRACTION ONE QUARTER 0x00bd, 0xab, // VULGAR FRACTION ONE HALF 0x00be, 0xf3, // VULGAR FRACTION THREE QUARTERS 0x00bf, 0xa8, // INVERTED QUESTION MARK 0x00c0, 0xb7, // LATIN CAPITAL LETTER A WITH GRAVE 0x00c1, 0xb5, // LATIN CAPITAL LETTER A WITH ACUTE 0x00c2, 0xb6, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00c3, 0xc7, // LATIN CAPITAL LETTER A WITH TILDE 0x00c4, 0x8e, // LATIN CAPITAL LETTER A WITH DIAERESIS 0x00c5, 0x8f, // LATIN CAPITAL LETTER A WITH RING ABOVE 0x00c6, 0x92, // LATIN CAPITAL LIGATURE AE 0x00c7, 0x80, // LATIN CAPITAL LETTER C WITH CEDILLA 0x00c8, 0xd4, // LATIN CAPITAL LETTER E WITH GRAVE 0x00c9, 0x90, // LATIN CAPITAL LETTER E WITH ACUTE 0x00ca, 0xd2, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00cb, 0xd3, // LATIN CAPITAL LETTER E WITH DIAERESIS 0x00cc, 0xde, // LATIN CAPITAL LETTER I WITH GRAVE 0x00cd, 0xd6, // LATIN CAPITAL LETTER I WITH ACUTE 0x00ce, 0xd7, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00cf, 0xd8, // LATIN CAPITAL LETTER I WITH DIAERESIS 0x00d0, 0xd1, // LATIN CAPITAL LETTER ETH 0x00d1, 0xa5, // LATIN CAPITAL LETTER N WITH TILDE 0x00d2, 0xe3, // LATIN CAPITAL LETTER O WITH GRAVE 0x00d3, 0xe0, // LATIN CAPITAL LETTER O WITH ACUTE 0x00d4, 0xe2, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00d5, 0xe5, // LATIN CAPITAL LETTER O WITH TILDE 0x00d6, 0x99, // LATIN CAPITAL LETTER O WITH DIAERESIS 0x00d7, 0x9e, // MULTIPLICATION SIGN 0x00d8, 0x9d, // LATIN CAPITAL LETTER O WITH STROKE 0x00d9, 0xeb, // LATIN CAPITAL LETTER U WITH GRAVE 0x00da, 0xe9, // LATIN CAPITAL LETTER U WITH ACUTE 0x00db, 0xea, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00dc, 0x9a, // LATIN CAPITAL LETTER U WITH DIAERESIS 0x00dd, 0xed, // LATIN CAPITAL LETTER Y WITH ACUTE 0x00de, 0xe8, // LATIN CAPITAL LETTER THORN 0x00df, 0xe1, // LATIN SMALL LETTER SHARP S 0x00e0, 0x85, // LATIN SMALL LETTER A WITH GRAVE 0x00e1, 0xa0, // LATIN SMALL LETTER A WITH ACUTE 0x00e2, 0x83, // LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00e3, 0xc6, // LATIN SMALL LETTER A WITH TILDE 0x00e4, 0x84, // LATIN SMALL LETTER A WITH DIAERESIS 0x00e5, 0x86, // LATIN SMALL LETTER A WITH RING ABOVE 0x00e6, 0x91, // LATIN SMALL LIGATURE AE 0x00e7, 0x87, // LATIN SMALL LETTER C WITH CEDILLA 0x00e8, 0x8a, // LATIN SMALL LETTER E WITH GRAVE 0x00e9, 0x82, // LATIN SMALL LETTER E WITH ACUTE 0x00ea, 0x88, // LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00eb, 0x89, // LATIN SMALL LETTER E WITH DIAERESIS 0x00ec, 0x8d, // LATIN SMALL LETTER I WITH GRAVE 0x00ed, 0xa1, // LATIN SMALL LETTER I WITH ACUTE 0x00ee, 0x8c, // LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00ef, 0x8b, // LATIN SMALL LETTER I WITH DIAERESIS 0x00f0, 0xd0, // LATIN SMALL LETTER ETH 0x00f1, 0xa4, // LATIN SMALL LETTER N WITH TILDE 0x00f2, 0x95, // LATIN SMALL LETTER O WITH GRAVE 0x00f3, 0xa2, // LATIN SMALL LETTER O WITH ACUTE 0x00f4, 0x93, // LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00f5, 0xe4, // LATIN SMALL LETTER O WITH TILDE 0x00f6, 0x94, // LATIN SMALL LETTER O WITH DIAERESIS 0x00f7, 0xf6, // DIVISION SIGN 0x00f8, 0x9b, // LATIN SMALL LETTER O WITH STROKE 0x00f9, 0x97, // LATIN SMALL LETTER U WITH GRAVE 0x00fa, 0xa3, // LATIN SMALL LETTER U WITH ACUTE 0x00fb, 0x96, // LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00fc, 0x81, // LATIN SMALL LETTER U WITH DIAERESIS 0x00fd, 0xec, // LATIN SMALL LETTER Y WITH ACUTE 0x00fe, 0xe7, // LATIN SMALL LETTER THORN 0x00ff, 0x98, // LATIN SMALL LETTER Y WITH DIAERESIS 0x0192, 0x9f, // LATIN SMALL LETTER F WITH HOOK 0x2017, 0xf2, // DOUBLE LOW LINE 0x20ac, 0xd5, // EURO SIGN 0x2500, 0xc4, // BOX DRAWINGS LIGHT HORIZONTAL 0x2502, 0xb3, // BOX DRAWINGS LIGHT VERTICAL 0x250c, 0xda, // BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2510, 0xbf, // BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, 0xc0, // BOX DRAWINGS LIGHT UP AND RIGHT 0x2518, 0xd9, // BOX DRAWINGS LIGHT UP AND LEFT 0x251c, 0xc3, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2524, 0xb4, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x252c, 0xc2, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x2534, 0xc1, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x253c, 0xc5, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x2550, 0xcd, // BOX DRAWINGS DOUBLE HORIZONTAL 0x2551, 0xba, // BOX DRAWINGS DOUBLE VERTICAL 0x2554, 0xc9, // BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2557, 0xbb, // BOX DRAWINGS DOUBLE DOWN AND LEFT 0x255a, 0xc8, // BOX DRAWINGS DOUBLE UP AND RIGHT 0x255d, 0xbc, // BOX DRAWINGS DOUBLE UP AND LEFT 0x2560, 0xcc, // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2563, 0xb9, // BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2566, 0xcb, // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2569, 0xca, // BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x256c, 0xce, // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x2580, 0xdf, // UPPER HALF BLOCK 0x2584, 0xdc, // LOWER HALF BLOCK 0x2588, 0xdb, // FULL BLOCK 0x2591, 0xb0, // LIGHT SHADE 0x2592, 0xb1, // MEDIUM SHADE 0x2593, 0xb2, // DARK SHADE 0x25a0, 0xfe, // BLACK SQUARE }; static const unsigned short fromMACROMAN[] = { 0x00C4, // 0x80 LATIN CAPITAL LETTER A WITH DIAERESI 0x00C5, // 0x81 LATIN CAPITAL LETTER A WITH RING ABOV 0x00C7, // 0x82 LATIN CAPITAL LETTER C WITH CEDILL 0x00C9, // 0x83 LATIN CAPITAL LETTER E WITH ACUT 0x00D1, // 0x84 LATIN CAPITAL LETTER N WITH TILD 0x00D6, // 0x85 LATIN CAPITAL LETTER O WITH DIAERESI 0x00DC, // 0x86 LATIN CAPITAL LETTER U WITH DIAERESI 0x00E1, // 0x87 LATIN SMALL LETTER A WITH ACUT 0x00E0, // 0x88 LATIN SMALL LETTER A WITH GRAV 0x00E2, // 0x89 LATIN SMALL LETTER A WITH CIRCUMFLE 0x00E4, // 0x8A LATIN SMALL LETTER A WITH DIAERESI 0x00E3, // 0x8B LATIN SMALL LETTER A WITH TILD 0x00E5, // 0x8C LATIN SMALL LETTER A WITH RING ABOV 0x00E7, // 0x8D LATIN SMALL LETTER C WITH CEDILL 0x00E9, // 0x8E LATIN SMALL LETTER E WITH ACUT 0x00E8, // 0x8F LATIN SMALL LETTER E WITH GRAV 0x00EA, // 0x90 LATIN SMALL LETTER E WITH CIRCUMFLE 0x00EB, // 0x91 LATIN SMALL LETTER E WITH DIAERESI 0x00ED, // 0x92 LATIN SMALL LETTER I WITH ACUT 0x00EC, // 0x93 LATIN SMALL LETTER I WITH GRAV 0x00EE, // 0x94 LATIN SMALL LETTER I WITH CIRCUMFLE 0x00EF, // 0x95 LATIN SMALL LETTER I WITH DIAERESI 0x00F1, // 0x96 LATIN SMALL LETTER N WITH TILD 0x00F3, // 0x97 LATIN SMALL LETTER O WITH ACUT 0x00F2, // 0x98 LATIN SMALL LETTER O WITH GRAV 0x00F4, // 0x99 LATIN SMALL LETTER O WITH CIRCUMFLE 0x00F6, // 0x9A LATIN SMALL LETTER O WITH DIAERESI 0x00F5, // 0x9B LATIN SMALL LETTER O WITH TILD 0x00FA, // 0x9C LATIN SMALL LETTER U WITH ACUT 0x00F9, // 0x9D LATIN SMALL LETTER U WITH GRAV 0x00FB, // 0x9E LATIN SMALL LETTER U WITH CIRCUMFLE 0x00FC, // 0x9F LATIN SMALL LETTER U WITH DIAERESI 0x2020, // 0xA0 DAGGE 0x00B0, // 0xA1 DEGREE SIG 0x00A2, // 0xA2 CENT SIG 0x00A3, // 0xA3 POUND SIG 0x00A7, // 0xA4 SECTION SIG 0x2022, // 0xA5 BULLE 0x00B6, // 0xA6 PILCROW SIG 0x00DF, // 0xA7 LATIN SMALL LETTER SHARP 0x00AE, // 0xA8 REGISTERED SIG 0x00A9, // 0xA9 COPYRIGHT SIG 0x2122, // 0xAA TRADE MARK SIG 0x00B4, // 0xAB ACUTE ACCEN 0x00A8, // 0xAC DIAERESI 0x2260, // 0xAD NOT EQUAL T 0x00C6, // 0xAE LATIN CAPITAL LETTER A 0x00D8, // 0xAF LATIN CAPITAL LETTER O WITH STROK 0x221E, // 0xB0 INFINIT 0x00B1, // 0xB1 PLUS-MINUS SIG 0x2264, // 0xB2 LESS-THAN OR EQUAL T 0x2265, // 0xB3 GREATER-THAN OR EQUAL T 0x00A5, // 0xB4 YEN SIG 0x00B5, // 0xB5 MICRO SIG 0x2202, // 0xB6 PARTIAL DIFFERENTIA 0x2211, // 0xB7 N-ARY SUMMATIO 0x220F, // 0xB8 N-ARY PRODUC 0x03C0, // 0xB9 GREEK SMALL LETTER P 0x222B, // 0xBA INTEGRA 0x00AA, // 0xBB FEMININE ORDINAL INDICATO 0x00BA, // 0xBC MASCULINE ORDINAL INDICATO 0x03A9, // 0xBD GREEK CAPITAL LETTER OMEG 0x00E6, // 0xBE LATIN SMALL LETTER A 0x00F8, // 0xBF LATIN SMALL LETTER O WITH STROK 0x00BF, // 0xC0 INVERTED QUESTION MAR 0x00A1, // 0xC1 INVERTED EXCLAMATION MAR 0x00AC, // 0xC2 NOT SIG 0x221A, // 0xC3 SQUARE ROO 0x0192, // 0xC4 LATIN SMALL LETTER F WITH HOO 0x2248, // 0xC5 ALMOST EQUAL T 0x2206, // 0xC6 INCREMEN 0x00AB, // 0xC7 LEFT-POINTING DOUBLE ANGLE QUOTATION MAR 0x00BB, // 0xC8 RIGHT-POINTING DOUBLE ANGLE QUOTATION MAR 0x2026, // 0xC9 HORIZONTAL ELLIPSI 0x00A0, // 0xCA NO-BREAK SPAC 0x00C0, // 0xCB LATIN CAPITAL LETTER A WITH GRAV 0x00C3, // 0xCC LATIN CAPITAL LETTER A WITH TILD 0x00D5, // 0xCD LATIN CAPITAL LETTER O WITH TILD 0x0152, // 0xCE LATIN CAPITAL LIGATURE O 0x0153, // 0xCF LATIN SMALL LIGATURE O 0x2013, // 0xD0 EN DAS 0x2014, // 0xD1 EM DAS 0x201C, // 0xD2 LEFT DOUBLE QUOTATION MAR 0x201D, // 0xD3 RIGHT DOUBLE QUOTATION MAR 0x2018, // 0xD4 LEFT SINGLE QUOTATION MAR 0x2019, // 0xD5 RIGHT SINGLE QUOTATION MAR 0x00F7, // 0xD6 DIVISION SIG 0x25CA, // 0xD7 LOZENG 0x00FF, // 0xD8 LATIN SMALL LETTER Y WITH DIAERESI 0x0178, // 0xD9 LATIN CAPITAL LETTER Y WITH DIAERESI 0x2044, // 0xDA FRACTION SLAS 0x20AC, // 0xDB EURO SIG 0x2039, // 0xDC SINGLE LEFT-POINTING ANGLE QUOTATION MAR 0x203A, // 0xDD SINGLE RIGHT-POINTING ANGLE QUOTATION MAR 0xFB01, // 0xDE LATIN SMALL LIGATURE F 0xFB02, // 0xDF LATIN SMALL LIGATURE F 0x2021, // 0xE0 DOUBLE DAGGE 0x00B7, // 0xE1 MIDDLE DO 0x201A, // 0xE2 SINGLE LOW-9 QUOTATION MAR 0x201E, // 0xE3 DOUBLE LOW-9 QUOTATION MAR 0x2030, // 0xE4 PER MILLE SIG 0x00C2, // 0xE5 LATIN CAPITAL LETTER A WITH CIRCUMFLE 0x00CA, // 0xE6 LATIN CAPITAL LETTER E WITH CIRCUMFLE 0x00C1, // 0xE7 LATIN CAPITAL LETTER A WITH ACUT 0x00CB, // 0xE8 LATIN CAPITAL LETTER E WITH DIAERESI 0x00C8, // 0xE9 LATIN CAPITAL LETTER E WITH GRAV 0x00CD, // 0xEA LATIN CAPITAL LETTER I WITH ACUT 0x00CE, // 0xEB LATIN CAPITAL LETTER I WITH CIRCUMFLE 0x00CF, // 0xEC LATIN CAPITAL LETTER I WITH DIAERESI 0x00CC, // 0xED LATIN CAPITAL LETTER I WITH GRAV 0x00D3, // 0xEE LATIN CAPITAL LETTER O WITH ACUT 0x00D4, // 0xEF LATIN CAPITAL LETTER O WITH CIRCUMFLE 0xF8FF, // 0xF0 Apple logo (copyrighted 0x00D2, // 0xF1 LATIN CAPITAL LETTER O WITH GRAV 0x00DA, // 0xF2 LATIN CAPITAL LETTER U WITH ACUT 0x00DB, // 0xF3 LATIN CAPITAL LETTER U WITH CIRCUMFLE 0x00D9, // 0xF4 LATIN CAPITAL LETTER U WITH GRAV 0x0131, // 0xF5 LATIN SMALL LETTER DOTLESS 0x02C6, // 0xF6 MODIFIER LETTER CIRCUMFLEX ACCEN 0x02DC, // 0xF7 SMALL TILD 0x00AF, // 0xF8 MACRO 0x02D8, // 0xF9 BREV 0x02D9, // 0xFA DOT ABOV 0x02DA, // 0xFB RING ABOV 0x00B8, // 0xFC CEDILL 0x02DD, // 0xFD DOUBLE ACUTE ACCEN 0x02DB, // 0xFE OGONE 0x02C7 // 0xFF CARON }; static const CharSetCvt::MapEnt toMACROMAN[] = { 0x00A0, 0xCA, // NO-BREAK SPACE 0x00A1, 0xC1, // INVERTED EXCLAMATION MARK 0x00A2, 0xA2, // CENT SIGN 0x00A3, 0xA3, // POUND SIGN 0x00A5, 0xB4, // YEN SIGN 0x00A7, 0xA4, // SECTION SIGN 0x00A8, 0xAC, // DIAERESIS 0x00A9, 0xA9, // COPYRIGHT SIGN 0x00AA, 0xBB, // FEMININE ORDINAL INDICATOR 0x00AB, 0xC7, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, 0xC2, // NOT SIGN 0x00AE, 0xA8, // REGISTERED SIGN 0x00AF, 0xF8, // MACRON 0x00B0, 0xA1, // DEGREE SIGN 0x00B1, 0xB1, // PLUS-MINUS SIGN 0x00B4, 0xAB, // ACUTE ACCENT 0x00B5, 0xB5, // MICRO SIGN 0x00B6, 0xA6, // PILCROW SIGN 0x00B7, 0xE1, // MIDDLE DOT 0x00B8, 0xFC, // CEDILLA 0x00BA, 0xBC, // MASCULINE ORDINAL INDICATOR 0x00BB, 0xC8, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00BF, 0xC0, // INVERTED QUESTION MARK 0x00C0, 0xCB, // LATIN CAPITAL LETTER A WITH GRAVE 0x00C1, 0xE7, // LATIN CAPITAL LETTER A WITH ACUTE 0x00C2, 0xE5, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00C3, 0xCC, // LATIN CAPITAL LETTER A WITH TILDE 0x00C4, 0x80, // LATIN CAPITAL LETTER A WITH DIAERESIS 0x00C5, 0x81, // LATIN CAPITAL LETTER A WITH RING ABOVE 0x00C6, 0xAE, // LATIN CAPITAL LETTER AE 0x00C7, 0x82, // LATIN CAPITAL LETTER C WITH CEDILLA 0x00C8, 0xE9, // LATIN CAPITAL LETTER E WITH GRAVE 0x00C9, 0x83, // LATIN CAPITAL LETTER E WITH ACUTE 0x00CA, 0xE6, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00CB, 0xE8, // LATIN CAPITAL LETTER E WITH DIAERESIS 0x00CC, 0xED, // LATIN CAPITAL LETTER I WITH GRAVE 0x00CD, 0xEA, // LATIN CAPITAL LETTER I WITH ACUTE 0x00CE, 0xEB, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00CF, 0xEC, // LATIN CAPITAL LETTER I WITH DIAERESIS 0x00D1, 0x84, // LATIN CAPITAL LETTER N WITH TILDE 0x00D2, 0xF1, // LATIN CAPITAL LETTER O WITH GRAVE 0x00D3, 0xEE, // LATIN CAPITAL LETTER O WITH ACUTE 0x00D4, 0xEF, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00D5, 0xCD, // LATIN CAPITAL LETTER O WITH TILDE 0x00D6, 0x85, // LATIN CAPITAL LETTER O WITH DIAERESIS 0x00D8, 0xAF, // LATIN CAPITAL LETTER O WITH STROKE 0x00D9, 0xF4, // LATIN CAPITAL LETTER U WITH GRAVE 0x00DA, 0xF2, // LATIN CAPITAL LETTER U WITH ACUTE 0x00DB, 0xF3, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00DC, 0x86, // LATIN CAPITAL LETTER U WITH DIAERESIS 0x00DF, 0xA7, // LATIN SMALL LETTER SHARP S 0x00E0, 0x88, // LATIN SMALL LETTER A WITH GRAVE 0x00E1, 0x87, // LATIN SMALL LETTER A WITH ACUTE 0x00E2, 0x89, // LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00E3, 0x8B, // LATIN SMALL LETTER A WITH TILDE 0x00E4, 0x8A, // LATIN SMALL LETTER A WITH DIAERESIS 0x00E5, 0x8C, // LATIN SMALL LETTER A WITH RING ABOVE 0x00E6, 0xBE, // LATIN SMALL LETTER AE 0x00E7, 0x8D, // LATIN SMALL LETTER C WITH CEDILLA 0x00E8, 0x8F, // LATIN SMALL LETTER E WITH GRAVE 0x00E9, 0x8E, // LATIN SMALL LETTER E WITH ACUTE 0x00EA, 0x90, // LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00EB, 0x91, // LATIN SMALL LETTER E WITH DIAERESIS 0x00EC, 0x93, // LATIN SMALL LETTER I WITH GRAVE 0x00ED, 0x92, // LATIN SMALL LETTER I WITH ACUTE 0x00EE, 0x94, // LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00EF, 0x95, // LATIN SMALL LETTER I WITH DIAERESIS 0x00F1, 0x96, // LATIN SMALL LETTER N WITH TILDE 0x00F2, 0x98, // LATIN SMALL LETTER O WITH GRAVE 0x00F3, 0x97, // LATIN SMALL LETTER O WITH ACUTE 0x00F4, 0x99, // LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00F5, 0x9B, // LATIN SMALL LETTER O WITH TILDE 0x00F6, 0x9A, // LATIN SMALL LETTER O WITH DIAERESIS 0x00F7, 0xD6, // DIVISION SIGN 0x00F8, 0xBF, // LATIN SMALL LETTER O WITH STROKE 0x00F9, 0x9D, // LATIN SMALL LETTER U WITH GRAVE 0x00FA, 0x9C, // LATIN SMALL LETTER U WITH ACUTE 0x00FB, 0x9E, // LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00FC, 0x9F, // LATIN SMALL LETTER U WITH DIAERESIS 0x00FF, 0xD8, // LATIN SMALL LETTER Y WITH DIAERESIS 0x0131, 0xF5, // LATIN SMALL LETTER DOTLESS I 0x0152, 0xCE, // LATIN CAPITAL LIGATURE OE 0x0153, 0xCF, // LATIN SMALL LIGATURE OE 0x0178, 0xD9, // LATIN CAPITAL LETTER Y WITH DIAERESIS 0x0192, 0xC4, // LATIN SMALL LETTER F WITH HOOK 0x02C6, 0xF6, // MODIFIER LETTER CIRCUMFLEX ACCENT 0x02C7, 0xFF, // CARON 0x02D8, 0xF9, // BREVE 0x02D9, 0xFA, // DOT ABOVE 0x02DA, 0xFB, // RING ABOVE 0x02DB, 0xFE, // OGONEK 0x02DC, 0xF7, // SMALL TILDE 0x02DD, 0xFD, // DOUBLE ACUTE ACCENT 0x03A9, 0xBD, // GREEK CAPITAL LETTER OMEGA 0x03C0, 0xB9, // GREEK SMALL LETTER PI 0x2013, 0xD0, // EN DASH 0x2014, 0xD1, // EM DASH 0x2018, 0xD4, // LEFT SINGLE QUOTATION MARK 0x2019, 0xD5, // RIGHT SINGLE QUOTATION MARK 0x201A, 0xE2, // SINGLE LOW-9 QUOTATION MARK 0x201C, 0xD2, // LEFT DOUBLE QUOTATION MARK 0x201D, 0xD3, // RIGHT DOUBLE QUOTATION MARK 0x201E, 0xE3, // DOUBLE LOW-9 QUOTATION MARK 0x2020, 0xA0, // DAGGER 0x2021, 0xE0, // DOUBLE DAGGER 0x2022, 0xA5, // BULLET 0x2026, 0xC9, // HORIZONTAL ELLIPSIS 0x2030, 0xE4, // PER MILLE SIGN 0x2039, 0xDC, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK 0x203A, 0xDD, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 0x2044, 0xDA, // FRACTION SLASH 0x20AC, 0xDB, // EURO SIGN 0x2122, 0xAA, // TRADE MARK SIGN 0x2202, 0xB6, // PARTIAL DIFFERENTIAL 0x2206, 0xC6, // INCREMENT 0x220F, 0xB8, // N-ARY PRODUCT 0x2211, 0xB7, // N-ARY SUMMATION 0x221A, 0xC3, // SQUARE ROOT 0x221E, 0xB0, // INFINITY 0x222B, 0xBA, // INTEGRAL 0x2248, 0xC5, // ALMOST EQUAL TO 0x2260, 0xAD, // NOT EQUAL TO 0x2264, 0xB2, // LESS-THAN OR EQUAL TO 0x2265, 0xB3, // GREATER-THAN OR EQUAL TO 0x25CA, 0xD7, // LOZENGE 0xF8FF, 0xF0, // Apple logo (copyrighted) 0xFB01, 0xDE, // LATIN SMALL LIGATURE FI 0xFB02, 0xDF // LATIN SMALL LIGATURE FL }; static const unsigned short from8859_15[] = { 0x00A0, // 0xA0 NO-BREAK SPACE 0x00A1, // 0xA1 INVERTED EXCLAMATION MARK 0x00A2, // 0xA2 CENT SIGN 0x00A3, // 0xA3 POUND SIGN 0x20AC, // 0xA4 EURO SIGN 0x00A5, // 0xA5 YEN SIGN 0x0160, // 0xA6 LATIN CAPITAL LETTER S WITH CARON 0x00A7, // 0xA7 SECTION SIGN 0x0161, // 0xA8 LATIN SMALL LETTER S WITH CARON 0x00A9, // 0xA9 COPYRIGHT SIGN 0x00AA, // 0xAA FEMININE ORDINAL INDICATOR 0x00AB, // 0xAB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, // 0xAC NOT SIGN 0x00AD, // 0xAD SOFT HYPHEN 0x00AE, // 0xAE REGISTERED SIGN 0x00AF, // 0xAF MACRON 0x00B0, // 0xB0 DEGREE SIGN 0x00B1, // 0xB1 PLUS-MINUS SIGN 0x00B2, // 0xB2 SUPERSCRIPT TWO 0x00B3, // 0xB3 SUPERSCRIPT THREE 0x017D, // 0xB4 LATIN CAPITAL LETTER Z WITH CARON 0x00B5, // 0xB5 MICRO SIGN 0x00B6, // 0xB6 PILCROW SIGN 0x00B7, // 0xB7 MIDDLE DOT 0x017E, // 0xB8 LATIN SMALL LETTER Z WITH CARON 0x00B9, // 0xB9 SUPERSCRIPT ONE 0x00BA, // 0xBA MASCULINE ORDINAL INDICATOR 0x00BB, // 0xBB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x0152, // 0xBC LATIN CAPITAL LIGATURE OE 0x0153, // 0xBD LATIN SMALL LIGATURE OE 0x0178, // 0xBE LATIN CAPITAL LETTER Y WITH DIAERESIS 0x00BF, // 0xBF INVERTED QUESTION MARK 0x00C0, // 0xC0 LATIN CAPITAL LETTER A WITH GRAVE 0x00C1, // 0xC1 LATIN CAPITAL LETTER A WITH ACUTE 0x00C2, // 0xC2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00C3, // 0xC3 LATIN CAPITAL LETTER A WITH TILDE 0x00C4, // 0xC4 LATIN CAPITAL LETTER A WITH DIAERESIS 0x00C5, // 0xC5 LATIN CAPITAL LETTER A WITH RING ABOVE 0x00C6, // 0xC6 LATIN CAPITAL LETTER AE 0x00C7, // 0xC7 LATIN CAPITAL LETTER C WITH CEDILLA 0x00C8, // 0xC8 LATIN CAPITAL LETTER E WITH GRAVE 0x00C9, // 0xC9 LATIN CAPITAL LETTER E WITH ACUTE 0x00CA, // 0xCA LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00CB, // 0xCB LATIN CAPITAL LETTER E WITH DIAERESIS 0x00CC, // 0xCC LATIN CAPITAL LETTER I WITH GRAVE 0x00CD, // 0xCD LATIN CAPITAL LETTER I WITH ACUTE 0x00CE, // 0xCE LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00CF, // 0xCF LATIN CAPITAL LETTER I WITH DIAERESIS 0x00D0, // 0xD0 LATIN CAPITAL LETTER ETH 0x00D1, // 0xD1 LATIN CAPITAL LETTER N WITH TILDE 0x00D2, // 0xD2 LATIN CAPITAL LETTER O WITH GRAVE 0x00D3, // 0xD3 LATIN CAPITAL LETTER O WITH ACUTE 0x00D4, // 0xD4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00D5, // 0xD5 LATIN CAPITAL LETTER O WITH TILDE 0x00D6, // 0xD6 LATIN CAPITAL LETTER O WITH DIAERESIS 0x00D7, // 0xD7 MULTIPLICATION SIGN 0x00D8, // 0xD8 LATIN CAPITAL LETTER O WITH STROKE 0x00D9, // 0xD9 LATIN CAPITAL LETTER U WITH GRAVE 0x00DA, // 0xDA LATIN CAPITAL LETTER U WITH ACUTE 0x00DB, // 0xDB LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00DC, // 0xDC LATIN CAPITAL LETTER U WITH DIAERESIS 0x00DD, // 0xDD LATIN CAPITAL LETTER Y WITH ACUTE 0x00DE, // 0xDE LATIN CAPITAL LETTER THORN 0x00DF, // 0xDF LATIN SMALL LETTER SHARP S 0x00E0, // 0xE0 LATIN SMALL LETTER A WITH GRAVE 0x00E1, // 0xE1 LATIN SMALL LETTER A WITH ACUTE 0x00E2, // 0xE2 LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00E3, // 0xE3 LATIN SMALL LETTER A WITH TILDE 0x00E4, // 0xE4 LATIN SMALL LETTER A WITH DIAERESIS 0x00E5, // 0xE5 LATIN SMALL LETTER A WITH RING ABOVE 0x00E6, // 0xE6 LATIN SMALL LETTER AE 0x00E7, // 0xE7 LATIN SMALL LETTER C WITH CEDILLA 0x00E8, // 0xE8 LATIN SMALL LETTER E WITH GRAVE 0x00E9, // 0xE9 LATIN SMALL LETTER E WITH ACUTE 0x00EA, // 0xEA LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00EB, // 0xEB LATIN SMALL LETTER E WITH DIAERESIS 0x00EC, // 0xEC LATIN SMALL LETTER I WITH GRAVE 0x00ED, // 0xED LATIN SMALL LETTER I WITH ACUTE 0x00EE, // 0xEE LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00EF, // 0xEF LATIN SMALL LETTER I WITH DIAERESIS 0x00F0, // 0xF0 LATIN SMALL LETTER ETH 0x00F1, // 0xF1 LATIN SMALL LETTER N WITH TILDE 0x00F2, // 0xF2 LATIN SMALL LETTER O WITH GRAVE 0x00F3, // 0xF3 LATIN SMALL LETTER O WITH ACUTE 0x00F4, // 0xF4 LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00F5, // 0xF5 LATIN SMALL LETTER O WITH TILDE 0x00F6, // 0xF6 LATIN SMALL LETTER O WITH DIAERESIS 0x00F7, // 0xF7 DIVISION SIGN 0x00F8, // 0xF8 LATIN SMALL LETTER O WITH STROKE 0x00F9, // 0xF9 LATIN SMALL LETTER U WITH GRAVE 0x00FA, // 0xFA LATIN SMALL LETTER U WITH ACUTE 0x00FB, // 0xFB LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00FC, // 0xFC LATIN SMALL LETTER U WITH DIAERESIS 0x00FD, // 0xFD LATIN SMALL LETTER Y WITH ACUTE 0x00FE, // 0xFE LATIN SMALL LETTER THORN 0x00FF // 0xFF LATIN SMALL LETTER Y WITH DIAERESIS }; static const CharSetCvt::MapEnt to8859_15[] = { 0x00A0, 0xA0, // NO-BREAK SPACE 0x00A1, 0xA1, // INVERTED EXCLAMATION MARK 0x00A2, 0xA2, // CENT SIGN 0x00A3, 0xA3, // POUND SIGN 0x00A5, 0xA5, // YEN SIGN 0x00A7, 0xA7, // SECTION SIGN 0x00A9, 0xA9, // COPYRIGHT SIGN 0x00AA, 0xAA, // FEMININE ORDINAL INDICATOR 0x00AB, 0xAB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, 0xAC, // NOT SIGN 0x00AD, 0xAD, // SOFT HYPHEN 0x00AE, 0xAE, // REGISTERED SIGN 0x00AF, 0xAF, // MACRON 0x00B0, 0xB0, // DEGREE SIGN 0x00B1, 0xB1, // PLUS-MINUS SIGN 0x00B2, 0xB2, // SUPERSCRIPT TWO 0x00B3, 0xB3, // SUPERSCRIPT THREE 0x00B5, 0xB5, // MICRO SIGN 0x00B6, 0xB6, // PILCROW SIGN 0x00B7, 0xB7, // MIDDLE DOT 0x00B9, 0xB9, // SUPERSCRIPT ONE 0x00BA, 0xBA, // MASCULINE ORDINAL INDICATOR 0x00BB, 0xBB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00BF, 0xBF, // INVERTED QUESTION MARK 0x00C0, 0xC0, // LATIN CAPITAL LETTER A WITH GRAVE 0x00C1, 0xC1, // LATIN CAPITAL LETTER A WITH ACUTE 0x00C2, 0xC2, // LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00C3, 0xC3, // LATIN CAPITAL LETTER A WITH TILDE 0x00C4, 0xC4, // LATIN CAPITAL LETTER A WITH DIAERESIS 0x00C5, 0xC5, // LATIN CAPITAL LETTER A WITH RING ABOVE 0x00C6, 0xC6, // LATIN CAPITAL LETTER AE 0x00C7, 0xC7, // LATIN CAPITAL LETTER C WITH CEDILLA 0x00C8, 0xC8, // LATIN CAPITAL LETTER E WITH GRAVE 0x00C9, 0xC9, // LATIN CAPITAL LETTER E WITH ACUTE 0x00CA, 0xCA, // LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00CB, 0xCB, // LATIN CAPITAL LETTER E WITH DIAERESIS 0x00CC, 0xCC, // LATIN CAPITAL LETTER I WITH GRAVE 0x00CD, 0xCD, // LATIN CAPITAL LETTER I WITH ACUTE 0x00CE, 0xCE, // LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00CF, 0xCF, // LATIN CAPITAL LETTER I WITH DIAERESIS 0x00D0, 0xD0, // LATIN CAPITAL LETTER ETH 0x00D1, 0xD1, // LATIN CAPITAL LETTER N WITH TILDE 0x00D2, 0xD2, // LATIN CAPITAL LETTER O WITH GRAVE 0x00D3, 0xD3, // LATIN CAPITAL LETTER O WITH ACUTE 0x00D4, 0xD4, // LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00D5, 0xD5, // LATIN CAPITAL LETTER O WITH TILDE 0x00D6, 0xD6, // LATIN CAPITAL LETTER O WITH DIAERESIS 0x00D7, 0xD7, // MULTIPLICATION SIGN 0x00D8, 0xD8, // LATIN CAPITAL LETTER O WITH STROKE 0x00D9, 0xD9, // LATIN CAPITAL LETTER U WITH GRAVE 0x00DA, 0xDA, // LATIN CAPITAL LETTER U WITH ACUTE 0x00DB, 0xDB, // LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00DC, 0xDC, // LATIN CAPITAL LETTER U WITH DIAERESIS 0x00DD, 0xDD, // LATIN CAPITAL LETTER Y WITH ACUTE 0x00DE, 0xDE, // LATIN CAPITAL LETTER THORN 0x00DF, 0xDF, // LATIN SMALL LETTER SHARP S 0x00E0, 0xE0, // LATIN SMALL LETTER A WITH GRAVE 0x00E1, 0xE1, // LATIN SMALL LETTER A WITH ACUTE 0x00E2, 0xE2, // LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00E3, 0xE3, // LATIN SMALL LETTER A WITH TILDE 0x00E4, 0xE4, // LATIN SMALL LETTER A WITH DIAERESIS 0x00E5, 0xE5, // LATIN SMALL LETTER A WITH RING ABOVE 0x00E6, 0xE6, // LATIN SMALL LETTER AE 0x00E7, 0xE7, // LATIN SMALL LETTER C WITH CEDILLA 0x00E8, 0xE8, // LATIN SMALL LETTER E WITH GRAVE 0x00E9, 0xE9, // LATIN SMALL LETTER E WITH ACUTE 0x00EA, 0xEA, // LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00EB, 0xEB, // LATIN SMALL LETTER E WITH DIAERESIS 0x00EC, 0xEC, // LATIN SMALL LETTER I WITH GRAVE 0x00ED, 0xED, // LATIN SMALL LETTER I WITH ACUTE 0x00EE, 0xEE, // LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00EF, 0xEF, // LATIN SMALL LETTER I WITH DIAERESIS 0x00F0, 0xF0, // LATIN SMALL LETTER ETH 0x00F1, 0xF1, // LATIN SMALL LETTER N WITH TILDE 0x00F2, 0xF2, // LATIN SMALL LETTER O WITH GRAVE 0x00F3, 0xF3, // LATIN SMALL LETTER O WITH ACUTE 0x00F4, 0xF4, // LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00F5, 0xF5, // LATIN SMALL LETTER O WITH TILDE 0x00F6, 0xF6, // LATIN SMALL LETTER O WITH DIAERESIS 0x00F7, 0xF7, // DIVISION SIGN 0x00F8, 0xF8, // LATIN SMALL LETTER O WITH STROKE 0x00F9, 0xF9, // LATIN SMALL LETTER U WITH GRAVE 0x00FA, 0xFA, // LATIN SMALL LETTER U WITH ACUTE 0x00FB, 0xFB, // LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00FC, 0xFC, // LATIN SMALL LETTER U WITH DIAERESIS 0x00FD, 0xFD, // LATIN SMALL LETTER Y WITH ACUTE 0x00FE, 0xFE, // LATIN SMALL LETTER THORN 0x00FF, 0xFF, // LATIN SMALL LETTER Y WITH DIAERESIS 0x0152, 0xBC, // LATIN CAPITAL LIGATURE OE 0x0153, 0xBD, // LATIN SMALL LIGATURE OE 0x0160, 0xA6, // LATIN CAPITAL LETTER S WITH CARON 0x0161, 0xA8, // LATIN SMALL LETTER S WITH CARON 0x0178, 0xBE, // LATIN CAPITAL LETTER Y WITH DIAERESIS 0x017D, 0xB4, // LATIN CAPITAL LETTER Z WITH CARON 0x017E, 0xB8, // LATIN SMALL LETTER Z WITH CARON 0x20AC, 0xA4 // EURO SIGN }; static const unsigned short from8859_5[] = { 0x00A0, // NO-BREAK SPACE 0x0401, // CYRILLIC CAPITAL LETTER IO 0x0402, // CYRILLIC CAPITAL LETTER DJE 0x0403, // CYRILLIC CAPITAL LETTER GJE 0x0404, // CYRILLIC CAPITAL LETTER UKRAINIAN IE 0x0405, // CYRILLIC CAPITAL LETTER DZE 0x0406, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 0x0407, // CYRILLIC CAPITAL LETTER YI 0x0408, // CYRILLIC CAPITAL LETTER JE 0x0409, // CYRILLIC CAPITAL LETTER LJE 0x040A, // CYRILLIC CAPITAL LETTER NJE 0x040B, // CYRILLIC CAPITAL LETTER TSHE 0x040C, // CYRILLIC CAPITAL LETTER KJE 0x00AD, // SOFT HYPHEN 0x040E, // CYRILLIC CAPITAL LETTER SHORT U 0x040F, // CYRILLIC CAPITAL LETTER DZHE 0x0410, // CYRILLIC CAPITAL LETTER A 0x0411, // CYRILLIC CAPITAL LETTER BE 0x0412, // CYRILLIC CAPITAL LETTER VE 0x0413, // CYRILLIC CAPITAL LETTER GHE 0x0414, // CYRILLIC CAPITAL LETTER DE 0x0415, // CYRILLIC CAPITAL LETTER IE 0x0416, // CYRILLIC CAPITAL LETTER ZHE 0x0417, // CYRILLIC CAPITAL LETTER ZE 0x0418, // CYRILLIC CAPITAL LETTER I 0x0419, // CYRILLIC CAPITAL LETTER SHORT I 0x041A, // CYRILLIC CAPITAL LETTER KA 0x041B, // CYRILLIC CAPITAL LETTER EL 0x041C, // CYRILLIC CAPITAL LETTER EM 0x041D, // CYRILLIC CAPITAL LETTER EN 0x041E, // CYRILLIC CAPITAL LETTER O 0x041F, // CYRILLIC CAPITAL LETTER PE 0x0420, // CYRILLIC CAPITAL LETTER ER 0x0421, // CYRILLIC CAPITAL LETTER ES 0x0422, // CYRILLIC CAPITAL LETTER TE 0x0423, // CYRILLIC CAPITAL LETTER U 0x0424, // CYRILLIC CAPITAL LETTER EF 0x0425, // CYRILLIC CAPITAL LETTER HA 0x0426, // CYRILLIC CAPITAL LETTER TSE 0x0427, // CYRILLIC CAPITAL LETTER CHE 0x0428, // CYRILLIC CAPITAL LETTER SHA 0x0429, // CYRILLIC CAPITAL LETTER SHCHA 0x042A, // CYRILLIC CAPITAL LETTER HARD SIGN 0x042B, // CYRILLIC CAPITAL LETTER YERU 0x042C, // CYRILLIC CAPITAL LETTER SOFT SIGN 0x042D, // CYRILLIC CAPITAL LETTER E 0x042E, // CYRILLIC CAPITAL LETTER YU 0x042F, // CYRILLIC CAPITAL LETTER YA 0x0430, // CYRILLIC SMALL LETTER A 0x0431, // CYRILLIC SMALL LETTER BE 0x0432, // CYRILLIC SMALL LETTER VE 0x0433, // CYRILLIC SMALL LETTER GHE 0x0434, // CYRILLIC SMALL LETTER DE 0x0435, // CYRILLIC SMALL LETTER IE 0x0436, // CYRILLIC SMALL LETTER ZHE 0x0437, // CYRILLIC SMALL LETTER ZE 0x0438, // CYRILLIC SMALL LETTER I 0x0439, // CYRILLIC SMALL LETTER SHORT I 0x043A, // CYRILLIC SMALL LETTER KA 0x043B, // CYRILLIC SMALL LETTER EL 0x043C, // CYRILLIC SMALL LETTER EM 0x043D, // CYRILLIC SMALL LETTER EN 0x043E, // CYRILLIC SMALL LETTER O 0x043F, // CYRILLIC SMALL LETTER PE 0x0440, // CYRILLIC SMALL LETTER ER 0x0441, // CYRILLIC SMALL LETTER ES 0x0442, // CYRILLIC SMALL LETTER TE 0x0443, // CYRILLIC SMALL LETTER U 0x0444, // CYRILLIC SMALL LETTER EF 0x0445, // CYRILLIC SMALL LETTER HA 0x0446, // CYRILLIC SMALL LETTER TSE 0x0447, // CYRILLIC SMALL LETTER CHE 0x0448, // CYRILLIC SMALL LETTER SHA 0x0449, // CYRILLIC SMALL LETTER SHCHA 0x044A, // CYRILLIC SMALL LETTER HARD SIGN 0x044B, // CYRILLIC SMALL LETTER YERU 0x044C, // CYRILLIC SMALL LETTER SOFT SIGN 0x044D, // CYRILLIC SMALL LETTER E 0x044E, // CYRILLIC SMALL LETTER YU 0x044F, // CYRILLIC SMALL LETTER YA 0x2116, // NUMERO SIGN 0x0451, // CYRILLIC SMALL LETTER IO 0x0452, // CYRILLIC SMALL LETTER DJE 0x0453, // CYRILLIC SMALL LETTER GJE 0x0454, // CYRILLIC SMALL LETTER UKRAINIAN IE 0x0455, // CYRILLIC SMALL LETTER DZE 0x0456, // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 0x0457, // CYRILLIC SMALL LETTER YI 0x0458, // CYRILLIC SMALL LETTER JE 0x0459, // CYRILLIC SMALL LETTER LJE 0x045A, // CYRILLIC SMALL LETTER NJE 0x045B, // CYRILLIC SMALL LETTER TSHE 0x045C, // CYRILLIC SMALL LETTER KJE 0x00A7, // SECTION SIGN 0x045E, // CYRILLIC SMALL LETTER SHORT U 0x045F // CYRILLIC SMALL LETTER DZHE }; static const CharSetCvt::MapEnt to8859_5[] = { 0x00A0, 0xA0, // NO-BREAK SPACE 0x00A7, 0xFD, // SECTION SIGN 0x00AD, 0xAD, // SOFT HYPHEN 0x0401, 0xA1, // CYRILLIC CAPITAL LETTER IO 0x0402, 0xA2, // CYRILLIC CAPITAL LETTER DJE 0x0403, 0xA3, // CYRILLIC CAPITAL LETTER GJE 0x0404, 0xA4, // CYRILLIC CAPITAL LETTER UKRAINIAN IE 0x0405, 0xA5, // CYRILLIC CAPITAL LETTER DZE 0x0406, 0xA6, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 0x0407, 0xA7, // CYRILLIC CAPITAL LETTER YI 0x0408, 0xA8, // CYRILLIC CAPITAL LETTER JE 0x0409, 0xA9, // CYRILLIC CAPITAL LETTER LJE 0x040A, 0xAA, // CYRILLIC CAPITAL LETTER NJE 0x040B, 0xAB, // CYRILLIC CAPITAL LETTER TSHE 0x040C, 0xAC, // CYRILLIC CAPITAL LETTER KJE 0x040E, 0xAE, // CYRILLIC CAPITAL LETTER SHORT U 0x040F, 0xAF, // CYRILLIC CAPITAL LETTER DZHE 0x0410, 0xB0, // CYRILLIC CAPITAL LETTER A 0x0411, 0xB1, // CYRILLIC CAPITAL LETTER BE 0x0412, 0xB2, // CYRILLIC CAPITAL LETTER VE 0x0413, 0xB3, // CYRILLIC CAPITAL LETTER GHE 0x0414, 0xB4, // CYRILLIC CAPITAL LETTER DE 0x0415, 0xB5, // CYRILLIC CAPITAL LETTER IE 0x0416, 0xB6, // CYRILLIC CAPITAL LETTER ZHE 0x0417, 0xB7, // CYRILLIC CAPITAL LETTER ZE 0x0418, 0xB8, // CYRILLIC CAPITAL LETTER I 0x0419, 0xB9, // CYRILLIC CAPITAL LETTER SHORT I 0x041A, 0xBA, // CYRILLIC CAPITAL LETTER KA 0x041B, 0xBB, // CYRILLIC CAPITAL LETTER EL 0x041C, 0xBC, // CYRILLIC CAPITAL LETTER EM 0x041D, 0xBD, // CYRILLIC CAPITAL LETTER EN 0x041E, 0xBE, // CYRILLIC CAPITAL LETTER O 0x041F, 0xBF, // CYRILLIC CAPITAL LETTER PE 0x0420, 0xC0, // CYRILLIC CAPITAL LETTER ER 0x0421, 0xC1, // CYRILLIC CAPITAL LETTER ES 0x0422, 0xC2, // CYRILLIC CAPITAL LETTER TE 0x0423, 0xC3, // CYRILLIC CAPITAL LETTER U 0x0424, 0xC4, // CYRILLIC CAPITAL LETTER EF 0x0425, 0xC5, // CYRILLIC CAPITAL LETTER HA 0x0426, 0xC6, // CYRILLIC CAPITAL LETTER TSE 0x0427, 0xC7, // CYRILLIC CAPITAL LETTER CHE 0x0428, 0xC8, // CYRILLIC CAPITAL LETTER SHA 0x0429, 0xC9, // CYRILLIC CAPITAL LETTER SHCHA 0x042A, 0xCA, // CYRILLIC CAPITAL LETTER HARD SIGN 0x042B, 0xCB, // CYRILLIC CAPITAL LETTER YERU 0x042C, 0xCC, // CYRILLIC CAPITAL LETTER SOFT SIGN 0x042D, 0xCD, // CYRILLIC CAPITAL LETTER E 0x042E, 0xCE, // CYRILLIC CAPITAL LETTER YU 0x042F, 0xCF, // CYRILLIC CAPITAL LETTER YA 0x0430, 0xD0, // CYRILLIC SMALL LETTER A 0x0431, 0xD1, // CYRILLIC SMALL LETTER BE 0x0432, 0xD2, // CYRILLIC SMALL LETTER VE 0x0433, 0xD3, // CYRILLIC SMALL LETTER GHE 0x0434, 0xD4, // CYRILLIC SMALL LETTER DE 0x0435, 0xD5, // CYRILLIC SMALL LETTER IE 0x0436, 0xD6, // CYRILLIC SMALL LETTER ZHE 0x0437, 0xD7, // CYRILLIC SMALL LETTER ZE 0x0438, 0xD8, // CYRILLIC SMALL LETTER I 0x0439, 0xD9, // CYRILLIC SMALL LETTER SHORT I 0x043A, 0xDA, // CYRILLIC SMALL LETTER KA 0x043B, 0xDB, // CYRILLIC SMALL LETTER EL 0x043C, 0xDC, // CYRILLIC SMALL LETTER EM 0x043D, 0xDD, // CYRILLIC SMALL LETTER EN 0x043E, 0xDE, // CYRILLIC SMALL LETTER O 0x043F, 0xDF, // CYRILLIC SMALL LETTER PE 0x0440, 0xE0, // CYRILLIC SMALL LETTER ER 0x0441, 0xE1, // CYRILLIC SMALL LETTER ES 0x0442, 0xE2, // CYRILLIC SMALL LETTER TE 0x0443, 0xE3, // CYRILLIC SMALL LETTER U 0x0444, 0xE4, // CYRILLIC SMALL LETTER EF 0x0445, 0xE5, // CYRILLIC SMALL LETTER HA 0x0446, 0xE6, // CYRILLIC SMALL LETTER TSE 0x0447, 0xE7, // CYRILLIC SMALL LETTER CHE 0x0448, 0xE8, // CYRILLIC SMALL LETTER SHA 0x0449, 0xE9, // CYRILLIC SMALL LETTER SHCHA 0x044A, 0xEA, // CYRILLIC SMALL LETTER HARD SIGN 0x044B, 0xEB, // CYRILLIC SMALL LETTER YERU 0x044C, 0xEC, // CYRILLIC SMALL LETTER SOFT SIGN 0x044D, 0xED, // CYRILLIC SMALL LETTER E 0x044E, 0xEE, // CYRILLIC SMALL LETTER YU 0x044F, 0xEF, // CYRILLIC SMALL LETTER YA 0x0451, 0xF1, // CYRILLIC SMALL LETTER IO 0x0452, 0xF2, // CYRILLIC SMALL LETTER DJE 0x0453, 0xF3, // CYRILLIC SMALL LETTER GJE 0x0454, 0xF4, // CYRILLIC SMALL LETTER UKRAINIAN IE 0x0455, 0xF5, // CYRILLIC SMALL LETTER DZE 0x0456, 0xF6, // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 0x0457, 0xF7, // CYRILLIC SMALL LETTER YI 0x0458, 0xF8, // CYRILLIC SMALL LETTER JE 0x0459, 0xF9, // CYRILLIC SMALL LETTER LJE 0x045A, 0xFA, // CYRILLIC SMALL LETTER NJE 0x045B, 0xFB, // CYRILLIC SMALL LETTER TSHE 0x045C, 0xFC, // CYRILLIC SMALL LETTER KJE 0x045E, 0xFE, // CYRILLIC SMALL LETTER SHORT U 0x045F, 0xFF, // CYRILLIC SMALL LETTER DZHE 0x2116, 0xF0 // NUMERO SIGN }; static const unsigned short fromKOI8_R[] = { 0x2500, // BOX DRAWINGS LIGHT HORIZONTAL 0x2502, // BOX DRAWINGS LIGHT VERTICAL 0x250C, // BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2510, // BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, // BOX DRAWINGS LIGHT UP AND RIGHT 0x2518, // BOX DRAWINGS LIGHT UP AND LEFT 0x251C, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2524, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x252C, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x2534, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x253C, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x2580, // UPPER HALF BLOCK 0x2584, // LOWER HALF BLOCK 0x2588, // FULL BLOCK 0x258C, // LEFT HALF BLOCK 0x2590, // RIGHT HALF BLOCK 0x2591, // LIGHT SHADE 0x2592, // MEDIUM SHADE 0x2593, // DARK SHADE 0x2320, // TOP HALF INTEGRAL 0x25A0, // BLACK SQUARE 0x2219, // BULLET OPERATOR 0x221A, // SQUARE ROOT 0x2248, // ALMOST EQUAL TO 0x2264, // LESS-THAN OR EQUAL TO 0x2265, // GREATER-THAN OR EQUAL TO 0x00A0, // NO-BREAK SPACE 0x2321, // BOTTOM HALF INTEGRAL 0x00B0, // DEGREE SIGN 0x00B2, // SUPERSCRIPT TWO 0x00B7, // MIDDLE DOT 0x00F7, // DIVISION SIGN 0x2550, // BOX DRAWINGS DOUBLE HORIZONTAL 0x2551, // BOX DRAWINGS DOUBLE VERTICAL 0x2552, // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE 0x0451, // CYRILLIC SMALL LETTER IO 0x2553, // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE 0x2554, // BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2555, // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE 0x2556, // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE 0x2557, // BOX DRAWINGS DOUBLE DOWN AND LEFT 0x2558, // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE 0x2559, // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE 0x255A, // BOX DRAWINGS DOUBLE UP AND RIGHT 0x255B, // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE 0x255C, // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE 0x255D, // BOX DRAWINGS DOUBLE UP AND LEFT 0x255E, // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE 0x255F, // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE 0x2560, // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2561, // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE 0x0401, // CYRILLIC CAPITAL LETTER IO 0x2562, // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE 0x2563, // BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2564, // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE 0x2565, // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE 0x2566, // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2567, // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE 0x2568, // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE 0x2569, // BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x256A, // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE 0x256B, // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE 0x256C, // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x00A9, // COPYRIGHT SIGN 0x044E, // CYRILLIC SMALL LETTER YU 0x0430, // CYRILLIC SMALL LETTER A 0x0431, // CYRILLIC SMALL LETTER BE 0x0446, // CYRILLIC SMALL LETTER TSE 0x0434, // CYRILLIC SMALL LETTER DE 0x0435, // CYRILLIC SMALL LETTER IE 0x0444, // CYRILLIC SMALL LETTER EF 0x0433, // CYRILLIC SMALL LETTER GHE 0x0445, // CYRILLIC SMALL LETTER HA 0x0438, // CYRILLIC SMALL LETTER I 0x0439, // CYRILLIC SMALL LETTER SHORT I 0x043A, // CYRILLIC SMALL LETTER KA 0x043B, // CYRILLIC SMALL LETTER EL 0x043C, // CYRILLIC SMALL LETTER EM 0x043D, // CYRILLIC SMALL LETTER EN 0x043E, // CYRILLIC SMALL LETTER O 0x043F, // CYRILLIC SMALL LETTER PE 0x044F, // CYRILLIC SMALL LETTER YA 0x0440, // CYRILLIC SMALL LETTER ER 0x0441, // CYRILLIC SMALL LETTER ES 0x0442, // CYRILLIC SMALL LETTER TE 0x0443, // CYRILLIC SMALL LETTER U 0x0436, // CYRILLIC SMALL LETTER ZHE 0x0432, // CYRILLIC SMALL LETTER VE 0x044C, // CYRILLIC SMALL LETTER SOFT SIGN 0x044B, // CYRILLIC SMALL LETTER YERU 0x0437, // CYRILLIC SMALL LETTER ZE 0x0448, // CYRILLIC SMALL LETTER SHA 0x044D, // CYRILLIC SMALL LETTER E 0x0449, // CYRILLIC SMALL LETTER SHCHA 0x0447, // CYRILLIC SMALL LETTER CHE 0x044A, // CYRILLIC SMALL LETTER HARD SIGN 0x042E, // CYRILLIC CAPITAL LETTER YU 0x0410, // CYRILLIC CAPITAL LETTER A 0x0411, // CYRILLIC CAPITAL LETTER BE 0x0426, // CYRILLIC CAPITAL LETTER TSE 0x0414, // CYRILLIC CAPITAL LETTER DE 0x0415, // CYRILLIC CAPITAL LETTER IE 0x0424, // CYRILLIC CAPITAL LETTER EF 0x0413, // CYRILLIC CAPITAL LETTER GHE 0x0425, // CYRILLIC CAPITAL LETTER HA 0x0418, // CYRILLIC CAPITAL LETTER I 0x0419, // CYRILLIC CAPITAL LETTER SHORT I 0x041A, // CYRILLIC CAPITAL LETTER KA 0x041B, // CYRILLIC CAPITAL LETTER EL 0x041C, // CYRILLIC CAPITAL LETTER EM 0x041D, // CYRILLIC CAPITAL LETTER EN 0x041E, // CYRILLIC CAPITAL LETTER O 0x041F, // CYRILLIC CAPITAL LETTER PE 0x042F, // CYRILLIC CAPITAL LETTER YA 0x0420, // CYRILLIC CAPITAL LETTER ER 0x0421, // CYRILLIC CAPITAL LETTER ES 0x0422, // CYRILLIC CAPITAL LETTER TE 0x0423, // CYRILLIC CAPITAL LETTER U 0x0416, // CYRILLIC CAPITAL LETTER ZHE 0x0412, // CYRILLIC CAPITAL LETTER VE 0x042C, // CYRILLIC CAPITAL LETTER SOFT SIGN 0x042B, // CYRILLIC CAPITAL LETTER YERU 0x0417, // CYRILLIC CAPITAL LETTER ZE 0x0428, // CYRILLIC CAPITAL LETTER SHA 0x042D, // CYRILLIC CAPITAL LETTER E 0x0429, // CYRILLIC CAPITAL LETTER SHCHA 0x0427, // CYRILLIC CAPITAL LETTER CHE 0x042A // CYRILLIC CAPITAL LETTER HARD SIGN }; static const CharSetCvt::MapEnt toKOI8_R[] = { 0x00A0, 0x9A, // NO-BREAK SPACE 0x00A9, 0xBF, // COPYRIGHT SIGN 0x00B0, 0x9C, // DEGREE SIGN 0x00B2, 0x9D, // SUPERSCRIPT TWO 0x00B7, 0x9E, // MIDDLE DOT 0x00F7, 0x9F, // DIVISION SIGN 0x0401, 0xB3, // CYRILLIC CAPITAL LETTER IO 0x0410, 0xE1, // CYRILLIC CAPITAL LETTER A 0x0411, 0xE2, // CYRILLIC CAPITAL LETTER BE 0x0412, 0xF7, // CYRILLIC CAPITAL LETTER VE 0x0413, 0xE7, // CYRILLIC CAPITAL LETTER GHE 0x0414, 0xE4, // CYRILLIC CAPITAL LETTER DE 0x0415, 0xE5, // CYRILLIC CAPITAL LETTER IE 0x0416, 0xF6, // CYRILLIC CAPITAL LETTER ZHE 0x0417, 0xFA, // CYRILLIC CAPITAL LETTER ZE 0x0418, 0xE9, // CYRILLIC CAPITAL LETTER I 0x0419, 0xEA, // CYRILLIC CAPITAL LETTER SHORT I 0x041A, 0xEB, // CYRILLIC CAPITAL LETTER KA 0x041B, 0xEC, // CYRILLIC CAPITAL LETTER EL 0x041C, 0xED, // CYRILLIC CAPITAL LETTER EM 0x041D, 0xEE, // CYRILLIC CAPITAL LETTER EN 0x041E, 0xEF, // CYRILLIC CAPITAL LETTER O 0x041F, 0xF0, // CYRILLIC CAPITAL LETTER PE 0x0420, 0xF2, // CYRILLIC CAPITAL LETTER ER 0x0421, 0xF3, // CYRILLIC CAPITAL LETTER ES 0x0422, 0xF4, // CYRILLIC CAPITAL LETTER TE 0x0423, 0xF5, // CYRILLIC CAPITAL LETTER U 0x0424, 0xE6, // CYRILLIC CAPITAL LETTER EF 0x0425, 0xE8, // CYRILLIC CAPITAL LETTER HA 0x0426, 0xE3, // CYRILLIC CAPITAL LETTER TSE 0x0427, 0xFE, // CYRILLIC CAPITAL LETTER CHE 0x0428, 0xFB, // CYRILLIC CAPITAL LETTER SHA 0x0429, 0xFD, // CYRILLIC CAPITAL LETTER SHCHA 0x042A, 0xFF, // CYRILLIC CAPITAL LETTER HARD SIGN 0x042B, 0xF9, // CYRILLIC CAPITAL LETTER YERU 0x042C, 0xF8, // CYRILLIC CAPITAL LETTER SOFT SIGN 0x042D, 0xFC, // CYRILLIC CAPITAL LETTER E 0x042E, 0xE0, // CYRILLIC CAPITAL LETTER YU 0x042F, 0xF1, // CYRILLIC CAPITAL LETTER YA 0x0430, 0xC1, // CYRILLIC SMALL LETTER A 0x0431, 0xC2, // CYRILLIC SMALL LETTER BE 0x0432, 0xD7, // CYRILLIC SMALL LETTER VE 0x0433, 0xC7, // CYRILLIC SMALL LETTER GHE 0x0434, 0xC4, // CYRILLIC SMALL LETTER DE 0x0435, 0xC5, // CYRILLIC SMALL LETTER IE 0x0436, 0xD6, // CYRILLIC SMALL LETTER ZHE 0x0437, 0xDA, // CYRILLIC SMALL LETTER ZE 0x0438, 0xC9, // CYRILLIC SMALL LETTER I 0x0439, 0xCA, // CYRILLIC SMALL LETTER SHORT I 0x043A, 0xCB, // CYRILLIC SMALL LETTER KA 0x043B, 0xCC, // CYRILLIC SMALL LETTER EL 0x043C, 0xCD, // CYRILLIC SMALL LETTER EM 0x043D, 0xCE, // CYRILLIC SMALL LETTER EN 0x043E, 0xCF, // CYRILLIC SMALL LETTER O 0x043F, 0xD0, // CYRILLIC SMALL LETTER PE 0x0440, 0xD2, // CYRILLIC SMALL LETTER ER 0x0441, 0xD3, // CYRILLIC SMALL LETTER ES 0x0442, 0xD4, // CYRILLIC SMALL LETTER TE 0x0443, 0xD5, // CYRILLIC SMALL LETTER U 0x0444, 0xC6, // CYRILLIC SMALL LETTER EF 0x0445, 0xC8, // CYRILLIC SMALL LETTER HA 0x0446, 0xC3, // CYRILLIC SMALL LETTER TSE 0x0447, 0xDE, // CYRILLIC SMALL LETTER CHE 0x0448, 0xDB, // CYRILLIC SMALL LETTER SHA 0x0449, 0xDD, // CYRILLIC SMALL LETTER SHCHA 0x044A, 0xDF, // CYRILLIC SMALL LETTER HARD SIGN 0x044B, 0xD9, // CYRILLIC SMALL LETTER YERU 0x044C, 0xD8, // CYRILLIC SMALL LETTER SOFT SIGN 0x044D, 0xDC, // CYRILLIC SMALL LETTER E 0x044E, 0xC0, // CYRILLIC SMALL LETTER YU 0x044F, 0xD1, // CYRILLIC SMALL LETTER YA 0x0451, 0xA3, // CYRILLIC SMALL LETTER IO 0x2219, 0x95, // BULLET OPERATOR 0x221A, 0x96, // SQUARE ROOT 0x2248, 0x97, // ALMOST EQUAL TO 0x2264, 0x98, // LESS-THAN OR EQUAL TO 0x2265, 0x99, // GREATER-THAN OR EQUAL TO 0x2320, 0x93, // TOP HALF INTEGRAL 0x2321, 0x9B, // BOTTOM HALF INTEGRAL 0x2500, 0x80, // BOX DRAWINGS LIGHT HORIZONTAL 0x2502, 0x81, // BOX DRAWINGS LIGHT VERTICAL 0x250C, 0x82, // BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2510, 0x83, // BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, 0x84, // BOX DRAWINGS LIGHT UP AND RIGHT 0x2518, 0x85, // BOX DRAWINGS LIGHT UP AND LEFT 0x251C, 0x86, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2524, 0x87, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x252C, 0x88, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x2534, 0x89, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x253C, 0x8A, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x2550, 0xA0, // BOX DRAWINGS DOUBLE HORIZONTAL 0x2551, 0xA1, // BOX DRAWINGS DOUBLE VERTICAL 0x2552, 0xA2, // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE 0x2553, 0xA4, // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE 0x2554, 0xA5, // BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2555, 0xA6, // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE 0x2556, 0xA7, // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE 0x2557, 0xA8, // BOX DRAWINGS DOUBLE DOWN AND LEFT 0x2558, 0xA9, // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE 0x2559, 0xAA, // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE 0x255A, 0xAB, // BOX DRAWINGS DOUBLE UP AND RIGHT 0x255B, 0xAC, // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE 0x255C, 0xAD, // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE 0x255D, 0xAE, // BOX DRAWINGS DOUBLE UP AND LEFT 0x255E, 0xAF, // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE 0x255F, 0xB0, // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE 0x2560, 0xB1, // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2561, 0xB2, // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE 0x2562, 0xB4, // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE 0x2563, 0xB5, // BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2564, 0xB6, // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE 0x2565, 0xB7, // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE 0x2566, 0xB8, // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2567, 0xB9, // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE 0x2568, 0xBA, // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE 0x2569, 0xBB, // BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x256A, 0xBC, // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE 0x256B, 0xBD, // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE 0x256C, 0xBE, // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x2580, 0x8B, // UPPER HALF BLOCK 0x2584, 0x8C, // LOWER HALF BLOCK 0x2588, 0x8D, // FULL BLOCK 0x258C, 0x8E, // LEFT HALF BLOCK 0x2590, 0x8F, // RIGHT HALF BLOCK 0x2591, 0x90, // LIGHT SHADE 0x2592, 0x91, // MEDIUM SHADE 0x2593, 0x92, // DARK SHADE 0x25A0, 0x94 // BLACK SQUARE }; static const unsigned short fromCP1251[] = { 0x0402, // CYRILLIC CAPITAL LETTER DJE 0x0403, // CYRILLIC CAPITAL LETTER GJE 0x201A, // SINGLE LOW-9 QUOTATION MARK 0x0453, // CYRILLIC SMALL LETTER GJE 0x201E, // DOUBLE LOW-9 QUOTATION MARK 0x2026, // HORIZONTAL ELLIPSIS 0x2020, // DAGGER 0x2021, // DOUBLE DAGGER 0x20AC, // EURO SIGN 0x2030, // PER MILLE SIGN 0x0409, // CYRILLIC CAPITAL LETTER LJE 0x2039, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK 0x040A, // CYRILLIC CAPITAL LETTER NJE 0x040C, // CYRILLIC CAPITAL LETTER KJE 0x040B, // CYRILLIC CAPITAL LETTER TSHE 0x040F, // CYRILLIC CAPITAL LETTER DZHE 0x0452, // CYRILLIC SMALL LETTER DJE 0x2018, // LEFT SINGLE QUOTATION MARK 0x2019, // RIGHT SINGLE QUOTATION MARK 0x201C, // LEFT DOUBLE QUOTATION MARK 0x201D, // RIGHT DOUBLE QUOTATION MARK 0x2022, // BULLET 0x2013, // EN DASH 0x2014, // EM DASH 0xfffd, // #UNDEFINED 0x2122, // TRADE MARK SIGN 0x0459, // CYRILLIC SMALL LETTER LJE 0x203A, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 0x045A, // CYRILLIC SMALL LETTER NJE 0x045C, // CYRILLIC SMALL LETTER KJE 0x045B, // CYRILLIC SMALL LETTER TSHE 0x045F, // CYRILLIC SMALL LETTER DZHE 0x00A0, // NO-BREAK SPACE 0x040E, // CYRILLIC CAPITAL LETTER SHORT U 0x045E, // CYRILLIC SMALL LETTER SHORT U 0x0408, // CYRILLIC CAPITAL LETTER JE 0x00A4, // CURRENCY SIGN 0x0490, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0x00A6, // BROKEN BAR 0x00A7, // SECTION SIGN 0x0401, // CYRILLIC CAPITAL LETTER IO 0x00A9, // COPYRIGHT SIGN 0x0404, // CYRILLIC CAPITAL LETTER UKRAINIAN IE 0x00AB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, // NOT SIGN 0x00AD, // SOFT HYPHEN 0x00AE, // REGISTERED SIGN 0x0407, // CYRILLIC CAPITAL LETTER YI 0x00B0, // DEGREE SIGN 0x00B1, // PLUS-MINUS SIGN 0x0406, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 0x0456, // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 0x0491, // CYRILLIC SMALL LETTER GHE WITH UPTURN 0x00B5, // MICRO SIGN 0x00B6, // PILCROW SIGN 0x00B7, // MIDDLE DOT 0x0451, // CYRILLIC SMALL LETTER IO 0x2116, // NUMERO SIGN 0x0454, // CYRILLIC SMALL LETTER UKRAINIAN IE 0x00BB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x0458, // CYRILLIC SMALL LETTER JE 0x0405, // CYRILLIC CAPITAL LETTER DZE 0x0455, // CYRILLIC SMALL LETTER DZE 0x0457, // CYRILLIC SMALL LETTER YI 0x0410, // CYRILLIC CAPITAL LETTER A 0x0411, // CYRILLIC CAPITAL LETTER BE 0x0412, // CYRILLIC CAPITAL LETTER VE 0x0413, // CYRILLIC CAPITAL LETTER GHE 0x0414, // CYRILLIC CAPITAL LETTER DE 0x0415, // CYRILLIC CAPITAL LETTER IE 0x0416, // CYRILLIC CAPITAL LETTER ZHE 0x0417, // CYRILLIC CAPITAL LETTER ZE 0x0418, // CYRILLIC CAPITAL LETTER I 0x0419, // CYRILLIC CAPITAL LETTER SHORT I 0x041A, // CYRILLIC CAPITAL LETTER KA 0x041B, // CYRILLIC CAPITAL LETTER EL 0x041C, // CYRILLIC CAPITAL LETTER EM 0x041D, // CYRILLIC CAPITAL LETTER EN 0x041E, // CYRILLIC CAPITAL LETTER O 0x041F, // CYRILLIC CAPITAL LETTER PE 0x0420, // CYRILLIC CAPITAL LETTER ER 0x0421, // CYRILLIC CAPITAL LETTER ES 0x0422, // CYRILLIC CAPITAL LETTER TE 0x0423, // CYRILLIC CAPITAL LETTER U 0x0424, // CYRILLIC CAPITAL LETTER EF 0x0425, // CYRILLIC CAPITAL LETTER HA 0x0426, // CYRILLIC CAPITAL LETTER TSE 0x0427, // CYRILLIC CAPITAL LETTER CHE 0x0428, // CYRILLIC CAPITAL LETTER SHA 0x0429, // CYRILLIC CAPITAL LETTER SHCHA 0x042A, // CYRILLIC CAPITAL LETTER HARD SIGN 0x042B, // CYRILLIC CAPITAL LETTER YERU 0x042C, // CYRILLIC CAPITAL LETTER SOFT SIGN 0x042D, // CYRILLIC CAPITAL LETTER E 0x042E, // CYRILLIC CAPITAL LETTER YU 0x042F, // CYRILLIC CAPITAL LETTER YA 0x0430, // CYRILLIC SMALL LETTER A 0x0431, // CYRILLIC SMALL LETTER BE 0x0432, // CYRILLIC SMALL LETTER VE 0x0433, // CYRILLIC SMALL LETTER GHE 0x0434, // CYRILLIC SMALL LETTER DE 0x0435, // CYRILLIC SMALL LETTER IE 0x0436, // CYRILLIC SMALL LETTER ZHE 0x0437, // CYRILLIC SMALL LETTER ZE 0x0438, // CYRILLIC SMALL LETTER I 0x0439, // CYRILLIC SMALL LETTER SHORT I 0x043A, // CYRILLIC SMALL LETTER KA 0x043B, // CYRILLIC SMALL LETTER EL 0x043C, // CYRILLIC SMALL LETTER EM 0x043D, // CYRILLIC SMALL LETTER EN 0x043E, // CYRILLIC SMALL LETTER O 0x043F, // CYRILLIC SMALL LETTER PE 0x0440, // CYRILLIC SMALL LETTER ER 0x0441, // CYRILLIC SMALL LETTER ES 0x0442, // CYRILLIC SMALL LETTER TE 0x0443, // CYRILLIC SMALL LETTER U 0x0444, // CYRILLIC SMALL LETTER EF 0x0445, // CYRILLIC SMALL LETTER HA 0x0446, // CYRILLIC SMALL LETTER TSE 0x0447, // CYRILLIC SMALL LETTER CHE 0x0448, // CYRILLIC SMALL LETTER SHA 0x0449, // CYRILLIC SMALL LETTER SHCHA 0x044A, // CYRILLIC SMALL LETTER HARD SIGN 0x044B, // CYRILLIC SMALL LETTER YERU 0x044C, // CYRILLIC SMALL LETTER SOFT SIGN 0x044D, // CYRILLIC SMALL LETTER E 0x044E, // CYRILLIC SMALL LETTER YU 0x044F // CYRILLIC SMALL LETTER YA }; static const CharSetCvt::MapEnt toCP1251[] = { 0x00A0, 0xA0, // NO-BREAK SPACE 0x00A4, 0xA4, // CURRENCY SIGN 0x00A6, 0xA6, // BROKEN BAR 0x00A7, 0xA7, // SECTION SIGN 0x00A9, 0xA9, // COPYRIGHT SIGN 0x00AB, 0xAB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, 0xAC, // NOT SIGN 0x00AD, 0xAD, // SOFT HYPHEN 0x00AE, 0xAE, // REGISTERED SIGN 0x00B0, 0xB0, // DEGREE SIGN 0x00B1, 0xB1, // PLUS-MINUS SIGN 0x00B5, 0xB5, // MICRO SIGN 0x00B6, 0xB6, // PILCROW SIGN 0x00B7, 0xB7, // MIDDLE DOT 0x00BB, 0xBB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x0401, 0xA8, // CYRILLIC CAPITAL LETTER IO 0x0402, 0x80, // CYRILLIC CAPITAL LETTER DJE 0x0403, 0x81, // CYRILLIC CAPITAL LETTER GJE 0x0404, 0xAA, // CYRILLIC CAPITAL LETTER UKRAINIAN IE 0x0405, 0xBD, // CYRILLIC CAPITAL LETTER DZE 0x0406, 0xB2, // CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 0x0407, 0xAF, // CYRILLIC CAPITAL LETTER YI 0x0408, 0xA3, // CYRILLIC CAPITAL LETTER JE 0x0409, 0x8A, // CYRILLIC CAPITAL LETTER LJE 0x040A, 0x8C, // CYRILLIC CAPITAL LETTER NJE 0x040B, 0x8E, // CYRILLIC CAPITAL LETTER TSHE 0x040C, 0x8D, // CYRILLIC CAPITAL LETTER KJE 0x040E, 0xA1, // CYRILLIC CAPITAL LETTER SHORT U 0x040F, 0x8F, // CYRILLIC CAPITAL LETTER DZHE 0x0410, 0xC0, // CYRILLIC CAPITAL LETTER A 0x0411, 0xC1, // CYRILLIC CAPITAL LETTER BE 0x0412, 0xC2, // CYRILLIC CAPITAL LETTER VE 0x0413, 0xC3, // CYRILLIC CAPITAL LETTER GHE 0x0414, 0xC4, // CYRILLIC CAPITAL LETTER DE 0x0415, 0xC5, // CYRILLIC CAPITAL LETTER IE 0x0416, 0xC6, // CYRILLIC CAPITAL LETTER ZHE 0x0417, 0xC7, // CYRILLIC CAPITAL LETTER ZE 0x0418, 0xC8, // CYRILLIC CAPITAL LETTER I 0x0419, 0xC9, // CYRILLIC CAPITAL LETTER SHORT I 0x041A, 0xCA, // CYRILLIC CAPITAL LETTER KA 0x041B, 0xCB, // CYRILLIC CAPITAL LETTER EL 0x041C, 0xCC, // CYRILLIC CAPITAL LETTER EM 0x041D, 0xCD, // CYRILLIC CAPITAL LETTER EN 0x041E, 0xCE, // CYRILLIC CAPITAL LETTER O 0x041F, 0xCF, // CYRILLIC CAPITAL LETTER PE 0x0420, 0xD0, // CYRILLIC CAPITAL LETTER ER 0x0421, 0xD1, // CYRILLIC CAPITAL LETTER ES 0x0422, 0xD2, // CYRILLIC CAPITAL LETTER TE 0x0423, 0xD3, // CYRILLIC CAPITAL LETTER U 0x0424, 0xD4, // CYRILLIC CAPITAL LETTER EF 0x0425, 0xD5, // CYRILLIC CAPITAL LETTER HA 0x0426, 0xD6, // CYRILLIC CAPITAL LETTER TSE 0x0427, 0xD7, // CYRILLIC CAPITAL LETTER CHE 0x0428, 0xD8, // CYRILLIC CAPITAL LETTER SHA 0x0429, 0xD9, // CYRILLIC CAPITAL LETTER SHCHA 0x042A, 0xDA, // CYRILLIC CAPITAL LETTER HARD SIGN 0x042B, 0xDB, // CYRILLIC CAPITAL LETTER YERU 0x042C, 0xDC, // CYRILLIC CAPITAL LETTER SOFT SIGN 0x042D, 0xDD, // CYRILLIC CAPITAL LETTER E 0x042E, 0xDE, // CYRILLIC CAPITAL LETTER YU 0x042F, 0xDF, // CYRILLIC CAPITAL LETTER YA 0x0430, 0xE0, // CYRILLIC SMALL LETTER A 0x0431, 0xE1, // CYRILLIC SMALL LETTER BE 0x0432, 0xE2, // CYRILLIC SMALL LETTER VE 0x0433, 0xE3, // CYRILLIC SMALL LETTER GHE 0x0434, 0xE4, // CYRILLIC SMALL LETTER DE 0x0435, 0xE5, // CYRILLIC SMALL LETTER IE 0x0436, 0xE6, // CYRILLIC SMALL LETTER ZHE 0x0437, 0xE7, // CYRILLIC SMALL LETTER ZE 0x0438, 0xE8, // CYRILLIC SMALL LETTER I 0x0439, 0xE9, // CYRILLIC SMALL LETTER SHORT I 0x043A, 0xEA, // CYRILLIC SMALL LETTER KA 0x043B, 0xEB, // CYRILLIC SMALL LETTER EL 0x043C, 0xEC, // CYRILLIC SMALL LETTER EM 0x043D, 0xED, // CYRILLIC SMALL LETTER EN 0x043E, 0xEE, // CYRILLIC SMALL LETTER O 0x043F, 0xEF, // CYRILLIC SMALL LETTER PE 0x0440, 0xF0, // CYRILLIC SMALL LETTER ER 0x0441, 0xF1, // CYRILLIC SMALL LETTER ES 0x0442, 0xF2, // CYRILLIC SMALL LETTER TE 0x0443, 0xF3, // CYRILLIC SMALL LETTER U 0x0444, 0xF4, // CYRILLIC SMALL LETTER EF 0x0445, 0xF5, // CYRILLIC SMALL LETTER HA 0x0446, 0xF6, // CYRILLIC SMALL LETTER TSE 0x0447, 0xF7, // CYRILLIC SMALL LETTER CHE 0x0448, 0xF8, // CYRILLIC SMALL LETTER SHA 0x0449, 0xF9, // CYRILLIC SMALL LETTER SHCHA 0x044A, 0xFA, // CYRILLIC SMALL LETTER HARD SIGN 0x044B, 0xFB, // CYRILLIC SMALL LETTER YERU 0x044C, 0xFC, // CYRILLIC SMALL LETTER SOFT SIGN 0x044D, 0xFD, // CYRILLIC SMALL LETTER E 0x044E, 0xFE, // CYRILLIC SMALL LETTER YU 0x044F, 0xFF, // CYRILLIC SMALL LETTER YA 0x0451, 0xB8, // CYRILLIC SMALL LETTER IO 0x0452, 0x90, // CYRILLIC SMALL LETTER DJE 0x0453, 0x83, // CYRILLIC SMALL LETTER GJE 0x0454, 0xBA, // CYRILLIC SMALL LETTER UKRAINIAN IE 0x0455, 0xBE, // CYRILLIC SMALL LETTER DZE 0x0456, 0xB3, // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 0x0457, 0xBF, // CYRILLIC SMALL LETTER YI 0x0458, 0xBC, // CYRILLIC SMALL LETTER JE 0x0459, 0x9A, // CYRILLIC SMALL LETTER LJE 0x045A, 0x9C, // CYRILLIC SMALL LETTER NJE 0x045B, 0x9E, // CYRILLIC SMALL LETTER TSHE 0x045C, 0x9D, // CYRILLIC SMALL LETTER KJE 0x045E, 0xA2, // CYRILLIC SMALL LETTER SHORT U 0x045F, 0x9F, // CYRILLIC SMALL LETTER DZHE 0x0490, 0xA5, // CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0x0491, 0xB4, // CYRILLIC SMALL LETTER GHE WITH UPTURN 0x2013, 0x96, // EN DASH 0x2014, 0x97, // EM DASH 0x2018, 0x91, // LEFT SINGLE QUOTATION MARK 0x2019, 0x92, // RIGHT SINGLE QUOTATION MARK 0x201A, 0x82, // SINGLE LOW-9 QUOTATION MARK 0x201C, 0x93, // LEFT DOUBLE QUOTATION MARK 0x201D, 0x94, // RIGHT DOUBLE QUOTATION MARK 0x201E, 0x84, // DOUBLE LOW-9 QUOTATION MARK 0x2020, 0x86, // DAGGER 0x2021, 0x87, // DOUBLE DAGGER 0x2022, 0x95, // BULLET 0x2026, 0x85, // HORIZONTAL ELLIPSIS 0x2030, 0x89, // PER MILLE SIGN 0x2039, 0x8B, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK 0x203A, 0x9B, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 0x20AC, 0x88, // EURO SIGN 0x2116, 0xB9, // NUMERO SIGN 0x2122, 0x99 // TRADE MARK SIGN }; static const unsigned short fromCP1252[] = { 0x20AC, // 0x80 0xfffd, // 0x81 0x201A, // 0x82 0x0192, // 0x83 0x201E, // 0x84 0x2026, // 0x85 0x2020, // 0x86 0x2021, // 0x87 0x02C6, // 0x88 0x2030, // 0x89 0x0160, // 0x8A 0x2039, // 0x8B 0x0152, // 0x8C 0xfffd, // 0x8D 0x017D, // 0x8E 0xfffd, // 0x8F 0xfffd, // 0x90 0x2018, // 0x91 0x2019, // 0x92 0x201C, // 0x93 0x201D, // 0x94 0x2022, // 0x95 0x2013, // 0x96 0x2014, // 0x97 0x02DC, // 0x98 0x2122, // 0x99 0x0161, // 0x9A 0x203A, // 0x9B 0x0153, // 0x9C 0xfffd, // 0x9D 0x017E, // 0x9E 0x0178, // 0x9F 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF }; static const CharSetCvt::MapEnt toCP1252[] = { 0x00A0, 0x00A0, 0x00A1, 0x00A1, 0x00A2, 0x00A2, 0x00A3, 0x00A3, 0x00A4, 0x00A4, 0x00A5, 0x00A5, 0x00A6, 0x00A6, 0x00A7, 0x00A7, 0x00A8, 0x00A8, 0x00A9, 0x00A9, 0x00AA, 0x00AA, 0x00AB, 0x00AB, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AE, 0x00AE, 0x00AF, 0x00AF, 0x00B0, 0x00B0, 0x00B1, 0x00B1, 0x00B2, 0x00B2, 0x00B3, 0x00B3, 0x00B4, 0x00B4, 0x00B5, 0x00B5, 0x00B6, 0x00B6, 0x00B7, 0x00B7, 0x00B8, 0x00B8, 0x00B9, 0x00B9, 0x00BA, 0x00BA, 0x00BB, 0x00BB, 0x00BC, 0x00BC, 0x00BD, 0x00BD, 0x00BE, 0x00BE, 0x00BF, 0x00BF, 0x00C0, 0x00C0, 0x00C1, 0x00C1, 0x00C2, 0x00C2, 0x00C3, 0x00C3, 0x00C4, 0x00C4, 0x00C5, 0x00C5, 0x00C6, 0x00C6, 0x00C7, 0x00C7, 0x00C8, 0x00C8, 0x00C9, 0x00C9, 0x00CA, 0x00CA, 0x00CB, 0x00CB, 0x00CC, 0x00CC, 0x00CD, 0x00CD, 0x00CE, 0x00CE, 0x00CF, 0x00CF, 0x00D0, 0x00D0, 0x00D1, 0x00D1, 0x00D2, 0x00D2, 0x00D3, 0x00D3, 0x00D4, 0x00D4, 0x00D5, 0x00D5, 0x00D6, 0x00D6, 0x00D7, 0x00D7, 0x00D8, 0x00D8, 0x00D9, 0x00D9, 0x00DA, 0x00DA, 0x00DB, 0x00DB, 0x00DC, 0x00DC, 0x00DD, 0x00DD, 0x00DE, 0x00DE, 0x00DF, 0x00DF, 0x00E0, 0x00E0, 0x00E1, 0x00E1, 0x00E2, 0x00E2, 0x00E3, 0x00E3, 0x00E4, 0x00E4, 0x00E5, 0x00E5, 0x00E6, 0x00E6, 0x00E7, 0x00E7, 0x00E8, 0x00E8, 0x00E9, 0x00E9, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00EC, 0x00EC, 0x00ED, 0x00ED, 0x00EE, 0x00EE, 0x00EF, 0x00EF, 0x00F0, 0x00F0, 0x00F1, 0x00F1, 0x00F2, 0x00F2, 0x00F3, 0x00F3, 0x00F4, 0x00F4, 0x00F5, 0x00F5, 0x00F6, 0x00F6, 0x00F7, 0x00F7, 0x00F8, 0x00F8, 0x00F9, 0x00F9, 0x00FA, 0x00FA, 0x00FB, 0x00FB, 0x00FC, 0x00FC, 0x00FD, 0x00FD, 0x00FE, 0x00FE, 0x00FF, 0x00FF, 0x0152, 0x8C, 0x0153, 0x9C, 0x0160, 0x8A, 0x0161, 0x9A, 0x0178, 0x9F, 0x017D, 0x8E, 0x017E, 0x9E, 0x0192, 0x83, 0x02C6, 0x88, 0x02DC, 0x98, 0x2013, 0x96, 0x2014, 0x97, 0x2018, 0x91, 0x2019, 0x92, 0x201A, 0x82, 0x201C, 0x93, 0x201D, 0x94, 0x201E, 0x84, 0x2020, 0x86, 0x2021, 0x87, 0x2022, 0x95, 0x2026, 0x85, 0x2030, 0x89, 0x2039, 0x8B, 0x203A, 0x9B, 0x20AC, 0x80, 0x2122, 0x99 }; static const unsigned short fromCP1253[] = { 0x20AC, // EURO SIGN 0xfffd, // #UNDEFINED 0x201A, // SINGLE LOW-9 QUOTATION MARK 0x0192, // LATIN SMALL LETTER F WITH HOOK 0x201E, // DOUBLE LOW-9 QUOTATION MARK 0x2026, // HORIZONTAL ELLIPSIS 0x2020, // DAGGER 0x2021, // DOUBLE DAGGER 0xfffd, // #UNDEFINED 0x2030, // PER MILLE SIGN 0xfffd, // #UNDEFINED 0x2039, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0x2018, // LEFT SINGLE QUOTATION MARK 0x2019, // RIGHT SINGLE QUOTATION MARK 0x201C, // LEFT DOUBLE QUOTATION MARK 0x201D, // RIGHT DOUBLE QUOTATION MARK 0x2022, // BULLET 0x2013, // EN DASH 0x2014, // EM DASH 0xfffd, // #UNDEFINED 0x2122, // TRADE MARK SIGN 0xfffd, // #UNDEFINED 0x203A, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0xfffd, // #UNDEFINED 0x00A0, // NO-BREAK SPACE 0x0385, // GREEK DIALYTIKA TONOS 0x0386, // GREEK CAPITAL LETTER ALPHA WITH TONOS 0x00A3, // POUND SIGN 0x00A4, // CURRENCY SIGN 0x00A5, // YEN SIGN 0x00A6, // BROKEN BAR 0x00A7, // SECTION SIGN 0x00A8, // DIAERESIS 0x00A9, // COPYRIGHT SIGN 0xfffd, // #UNDEFINED 0x00AB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, // NOT SIGN 0x00AD, // SOFT HYPHEN 0x00AE, // REGISTERED SIGN 0x2015, // HORIZONTAL BAR 0x00B0, // DEGREE SIGN 0x00B1, // PLUS-MINUS SIGN 0x00B2, // SUPERSCRIPT TWO 0x00B3, // SUPERSCRIPT THREE 0x0384, // GREEK TONOS 0x00B5, // MICRO SIGN 0x00B6, // PILCROW SIGN 0x00B7, // MIDDLE DOT 0x0388, // GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, // GREEK CAPITAL LETTER ETA WITH TONOS 0x038A, // GREEK CAPITAL LETTER IOTA WITH TONOS 0x00BB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x038C, // GREEK CAPITAL LETTER OMICRON WITH TONOS 0x00BD, // VULGAR FRACTION ONE HALF 0x038E, // GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038F, // GREEK CAPITAL LETTER OMEGA WITH TONOS 0x0390, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 0x0391, // GREEK CAPITAL LETTER ALPHA 0x0392, // GREEK CAPITAL LETTER BETA 0x0393, // GREEK CAPITAL LETTER GAMMA 0x0394, // GREEK CAPITAL LETTER DELTA 0x0395, // GREEK CAPITAL LETTER EPSILON 0x0396, // GREEK CAPITAL LETTER ZETA 0x0397, // GREEK CAPITAL LETTER ETA 0x0398, // GREEK CAPITAL LETTER THETA 0x0399, // GREEK CAPITAL LETTER IOTA 0x039A, // GREEK CAPITAL LETTER KAPPA 0x039B, // GREEK CAPITAL LETTER LAMDA 0x039C, // GREEK CAPITAL LETTER MU 0x039D, // GREEK CAPITAL LETTER NU 0x039E, // GREEK CAPITAL LETTER XI 0x039F, // GREEK CAPITAL LETTER OMICRON 0x03A0, // GREEK CAPITAL LETTER PI 0x03A1, // GREEK CAPITAL LETTER RHO 0xfffd, // #UNDEFINED 0x03A3, // GREEK CAPITAL LETTER SIGMA 0x03A4, // GREEK CAPITAL LETTER TAU 0x03A5, // GREEK CAPITAL LETTER UPSILON 0x03A6, // GREEK CAPITAL LETTER PHI 0x03A7, // GREEK CAPITAL LETTER CHI 0x03A8, // GREEK CAPITAL LETTER PSI 0x03A9, // GREEK CAPITAL LETTER OMEGA 0x03AA, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03AB, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x03AC, // GREEK SMALL LETTER ALPHA WITH TONOS 0x03AD, // GREEK SMALL LETTER EPSILON WITH TONOS 0x03AE, // GREEK SMALL LETTER ETA WITH TONOS 0x03AF, // GREEK SMALL LETTER IOTA WITH TONOS 0x03B0, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 0x03B1, // GREEK SMALL LETTER ALPHA 0x03B2, // GREEK SMALL LETTER BETA 0x03B3, // GREEK SMALL LETTER GAMMA 0x03B4, // GREEK SMALL LETTER DELTA 0x03B5, // GREEK SMALL LETTER EPSILON 0x03B6, // GREEK SMALL LETTER ZETA 0x03B7, // GREEK SMALL LETTER ETA 0x03B8, // GREEK SMALL LETTER THETA 0x03B9, // GREEK SMALL LETTER IOTA 0x03BA, // GREEK SMALL LETTER KAPPA 0x03BB, // GREEK SMALL LETTER LAMDA 0x03BC, // GREEK SMALL LETTER MU 0x03BD, // GREEK SMALL LETTER NU 0x03BE, // GREEK SMALL LETTER XI 0x03BF, // GREEK SMALL LETTER OMICRON 0x03C0, // GREEK SMALL LETTER PI 0x03C1, // GREEK SMALL LETTER RHO 0x03C2, // GREEK SMALL LETTER FINAL SIGMA 0x03C3, // GREEK SMALL LETTER SIGMA 0x03C4, // GREEK SMALL LETTER TAU 0x03C5, // GREEK SMALL LETTER UPSILON 0x03C6, // GREEK SMALL LETTER PHI 0x03C7, // GREEK SMALL LETTER CHI 0x03C8, // GREEK SMALL LETTER PSI 0x03C9, // GREEK SMALL LETTER OMEGA 0x03CA, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03CB, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03CC, // GREEK SMALL LETTER OMICRON WITH TONOS 0x03CD, // GREEK SMALL LETTER UPSILON WITH TONOS 0x03CE, // GREEK SMALL LETTER OMEGA WITH TONOS 0xfffd // #UNDEFINED }; static const CharSetCvt::MapEnt toCP1253[] = { 0x00A0, 0xA0, // NO-BREAK SPACE 0x00A3, 0xA3, // POUND SIGN 0x00A4, 0xA4, // CURRENCY SIGN 0x00A5, 0xA5, // YEN SIGN 0x00A6, 0xA6, // BROKEN BAR 0x00A7, 0xA7, // SECTION SIGN 0x00A8, 0xA8, // DIAERESIS 0x00A9, 0xA9, // COPYRIGHT SIGN 0x00AB, 0xAB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, 0xAC, // NOT SIGN 0x00AD, 0xAD, // SOFT HYPHEN 0x00AE, 0xAE, // REGISTERED SIGN 0x00B0, 0xB0, // DEGREE SIGN 0x00B1, 0xB1, // PLUS-MINUS SIGN 0x00B2, 0xB2, // SUPERSCRIPT TWO 0x00B3, 0xB3, // SUPERSCRIPT THREE 0x00B5, 0xB5, // MICRO SIGN 0x00B6, 0xB6, // PILCROW SIGN 0x00B7, 0xB7, // MIDDLE DOT 0x00BB, 0xBB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00BD, 0xBD, // VULGAR FRACTION ONE HALF 0x0192, 0x83, // LATIN SMALL LETTER F WITH HOOK 0x0384, 0xB4, // GREEK TONOS 0x0385, 0xA1, // GREEK DIALYTIKA TONOS 0x0386, 0xA2, // GREEK CAPITAL LETTER ALPHA WITH TONOS 0x0388, 0xB8, // GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, 0xB9, // GREEK CAPITAL LETTER ETA WITH TONOS 0x038A, 0xBA, // GREEK CAPITAL LETTER IOTA WITH TONOS 0x038C, 0xBC, // GREEK CAPITAL LETTER OMICRON WITH TONOS 0x038E, 0xBE, // GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038F, 0xBF, // GREEK CAPITAL LETTER OMEGA WITH TONOS 0x0390, 0xC0, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 0x0391, 0xC1, // GREEK CAPITAL LETTER ALPHA 0x0392, 0xC2, // GREEK CAPITAL LETTER BETA 0x0393, 0xC3, // GREEK CAPITAL LETTER GAMMA 0x0394, 0xC4, // GREEK CAPITAL LETTER DELTA 0x0395, 0xC5, // GREEK CAPITAL LETTER EPSILON 0x0396, 0xC6, // GREEK CAPITAL LETTER ZETA 0x0397, 0xC7, // GREEK CAPITAL LETTER ETA 0x0398, 0xC8, // GREEK CAPITAL LETTER THETA 0x0399, 0xC9, // GREEK CAPITAL LETTER IOTA 0x039A, 0xCA, // GREEK CAPITAL LETTER KAPPA 0x039B, 0xCB, // GREEK CAPITAL LETTER LAMDA 0x039C, 0xCC, // GREEK CAPITAL LETTER MU 0x039D, 0xCD, // GREEK CAPITAL LETTER NU 0x039E, 0xCE, // GREEK CAPITAL LETTER XI 0x039F, 0xCF, // GREEK CAPITAL LETTER OMICRON 0x03A0, 0xD0, // GREEK CAPITAL LETTER PI 0x03A1, 0xD1, // GREEK CAPITAL LETTER RHO 0x03A3, 0xD3, // GREEK CAPITAL LETTER SIGMA 0x03A4, 0xD4, // GREEK CAPITAL LETTER TAU 0x03A5, 0xD5, // GREEK CAPITAL LETTER UPSILON 0x03A6, 0xD6, // GREEK CAPITAL LETTER PHI 0x03A7, 0xD7, // GREEK CAPITAL LETTER CHI 0x03A8, 0xD8, // GREEK CAPITAL LETTER PSI 0x03A9, 0xD9, // GREEK CAPITAL LETTER OMEGA 0x03AA, 0xDA, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03AB, 0xDB, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x03AC, 0xDC, // GREEK SMALL LETTER ALPHA WITH TONOS 0x03AD, 0xDD, // GREEK SMALL LETTER EPSILON WITH TONOS 0x03AE, 0xDE, // GREEK SMALL LETTER ETA WITH TONOS 0x03AF, 0xDF, // GREEK SMALL LETTER IOTA WITH TONOS 0x03B0, 0xE0, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 0x03B1, 0xE1, // GREEK SMALL LETTER ALPHA 0x03B2, 0xE2, // GREEK SMALL LETTER BETA 0x03B3, 0xE3, // GREEK SMALL LETTER GAMMA 0x03B4, 0xE4, // GREEK SMALL LETTER DELTA 0x03B5, 0xE5, // GREEK SMALL LETTER EPSILON 0x03B6, 0xE6, // GREEK SMALL LETTER ZETA 0x03B7, 0xE7, // GREEK SMALL LETTER ETA 0x03B8, 0xE8, // GREEK SMALL LETTER THETA 0x03B9, 0xE9, // GREEK SMALL LETTER IOTA 0x03BA, 0xEA, // GREEK SMALL LETTER KAPPA 0x03BB, 0xEB, // GREEK SMALL LETTER LAMDA 0x03BC, 0xEC, // GREEK SMALL LETTER MU 0x03BD, 0xED, // GREEK SMALL LETTER NU 0x03BE, 0xEE, // GREEK SMALL LETTER XI 0x03BF, 0xEF, // GREEK SMALL LETTER OMICRON 0x03C0, 0xF0, // GREEK SMALL LETTER PI 0x03C1, 0xF1, // GREEK SMALL LETTER RHO 0x03C2, 0xF2, // GREEK SMALL LETTER FINAL SIGMA 0x03C3, 0xF3, // GREEK SMALL LETTER SIGMA 0x03C4, 0xF4, // GREEK SMALL LETTER TAU 0x03C5, 0xF5, // GREEK SMALL LETTER UPSILON 0x03C6, 0xF6, // GREEK SMALL LETTER PHI 0x03C7, 0xF7, // GREEK SMALL LETTER CHI 0x03C8, 0xF8, // GREEK SMALL LETTER PSI 0x03C9, 0xF9, // GREEK SMALL LETTER OMEGA 0x03CA, 0xFA, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03CB, 0xFB, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03CC, 0xFC, // GREEK SMALL LETTER OMICRON WITH TONOS 0x03CD, 0xFD, // GREEK SMALL LETTER UPSILON WITH TONOS 0x03CE, 0xFE, // GREEK SMALL LETTER OMEGA WITH TONOS 0x2013, 0x96, // EN DASH 0x2014, 0x97, // EM DASH 0x2015, 0xAF, // HORIZONTAL BAR 0x2018, 0x91, // LEFT SINGLE QUOTATION MARK 0x2019, 0x92, // RIGHT SINGLE QUOTATION MARK 0x201A, 0x82, // SINGLE LOW-9 QUOTATION MARK 0x201C, 0x93, // LEFT DOUBLE QUOTATION MARK 0x201D, 0x94, // RIGHT DOUBLE QUOTATION MARK 0x201E, 0x84, // DOUBLE LOW-9 QUOTATION MARK 0x2020, 0x86, // DAGGER 0x2021, 0x87, // DOUBLE DAGGER 0x2022, 0x95, // BULLET 0x2026, 0x85, // HORIZONTAL ELLIPSIS 0x2030, 0x89, // PER MILLE SIGN 0x2039, 0x8B, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK 0x203A, 0x9B, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 0x20AC, 0x80, // EURO SIGN 0x2122, 0x99 // TRADE MARK SIGN }; const static unsigned short from8859_7[] = { 0x00A0, // NO-BREAK SPACE 0x2018, // LEFT SINGLE QUOTATION MARK 0x2019, // RIGHT SINGLE QUOTATION MARK 0x00A3, // POUND SIGN 0x20AC, // EURO SIGN 0x20AF, // DRACHMA SIGN 0x00A6, // BROKEN BAR 0x00A7, // SECTION SIGN 0x00A8, // DIAERESIS 0x00A9, // COPYRIGHT SIGN 0x037A, // GREEK YPOGEGRAMMENI 0x00AB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, // NOT SIGN 0x00AD, // SOFT HYPHEN 0xfffd, // undefined 0X2015, // HORIZONTAL BAR 0x00B0, // DEGREE SIGN 0x00B1, // PLUS-MINUS SIGN 0x00B2, // SUPERSCRIPT TWO 0x00B3, // SUPERSCRIPT THREE 0x0384, // GREEK TONOS 0x0385, // GREEK DIALYTIKA TONOS 0x0386, // GREEK CAPITAL LETTER ALPHA WITH TONOS 0x00B7, // MIDDLE DOT 0x0388, // GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, // GREEK CAPITAL LETTER ETA WITH TONOS 0x038A, // GREEK CAPITAL LETTER IOTA WITH TONOS 0x00BB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x038C, // GREEK CAPITAL LETTER OMICRON WITH TONOS 0x00BD, // VULGAR FRACTION ONE HALF 0x038E, // GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038F, // GREEK CAPITAL LETTER OMEGA WITH TONOS 0x0390, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 0x0391, // GREEK CAPITAL LETTER ALPHA 0x0392, // GREEK CAPITAL LETTER BETA 0x0393, // GREEK CAPITAL LETTER GAMMA 0x0394, // GREEK CAPITAL LETTER DELTA 0x0395, // GREEK CAPITAL LETTER EPSILON 0x0396, // GREEK CAPITAL LETTER ZETA 0x0397, // GREEK CAPITAL LETTER ETA 0x0398, // GREEK CAPITAL LETTER THETA 0x0399, // GREEK CAPITAL LETTER IOTA 0x039A, // GREEK CAPITAL LETTER KAPPA 0x039B, // GREEK CAPITAL LETTER LAMDA 0x039C, // GREEK CAPITAL LETTER MU 0x039D, // GREEK CAPITAL LETTER NU 0x039E, // GREEK CAPITAL LETTER XI 0x039F, // GREEK CAPITAL LETTER OMICRON 0x03A0, // GREEK CAPITAL LETTER PI 0xfffd, // undefined 0x03A1, // GREEK CAPITAL LETTER RHO 0x03A3, // GREEK CAPITAL LETTER SIGMA 0x03A4, // GREEK CAPITAL LETTER TAU 0x03A5, // GREEK CAPITAL LETTER UPSILON 0x03A6, // GREEK CAPITAL LETTER PHI 0x03A7, // GREEK CAPITAL LETTER CHI 0x03A8, // GREEK CAPITAL LETTER PSI 0x03A9, // GREEK CAPITAL LETTER OMEGA 0x03AA, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03AB, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x03AC, // GREEK SMALL LETTER ALPHA WITH TONOS 0x03AD, // GREEK SMALL LETTER EPSILON WITH TONOS 0x03AE, // GREEK SMALL LETTER ETA WITH TONOS 0x03AF, // GREEK SMALL LETTER IOTA WITH TONOS 0x03B0, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 0x03B1, // GREEK SMALL LETTER ALPHA 0x03B2, // GREEK SMALL LETTER BETA 0x03B3, // GREEK SMALL LETTER GAMMA 0x03B4, // GREEK SMALL LETTER DELTA 0x03B5, // GREEK SMALL LETTER EPSILON 0x03B6, // GREEK SMALL LETTER ZETA 0x03B7, // GREEK SMALL LETTER ETA 0x03B8, // GREEK SMALL LETTER THETA 0x03B9, // GREEK SMALL LETTER IOTA 0x03BA, // GREEK SMALL LETTER KAPPA 0x03BB, // GREEK SMALL LETTER LAMDA 0x03BC, // GREEK SMALL LETTER MU 0x03BD, // GREEK SMALL LETTER NU 0x03BE, // GREEK SMALL LETTER XI 0x03BF, // GREEK SMALL LETTER OMICRON 0x03C0, // GREEK SMALL LETTER PI 0x03C1, // GREEK SMALL LETTER RHO 0x03C2, // GREEK SMALL LETTER FINAL SIGMA 0x03C3, // GREEK SMALL LETTER SIGMA 0x03C4, // GREEK SMALL LETTER TAU 0x03C5, // GREEK SMALL LETTER UPSILON 0x03C6, // GREEK SMALL LETTER PHI 0x03C7, // GREEK SMALL LETTER CHI 0x03C8, // GREEK SMALL LETTER PSI 0x03C9, // GREEK SMALL LETTER OMEGA 0x03CA, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03CB, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03CC, // GREEK SMALL LETTER OMICRON WITH TONOS 0x03CD, // GREEK SMALL LETTER UPSILON WITH TONOS 0x03CE, // GREEK SMALL LETTER OMEGA WITH TONOS 0xfffd // undefined }; static const CharSetCvt::MapEnt to8859_7[] = { 0x00A0, 0xA0, // NO-BREAK SPACE 0x00A3, 0xA3, // POUND SIGN 0x00A6, 0xA6, // BROKEN BAR 0x00A7, 0xA7, // SECTION SIGN 0x00A8, 0xA8, // DIAERESIS 0x00A9, 0xA9, // COPYRIGHT SIGN 0x00AB, 0xAB, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, 0xAC, // NOT SIGN 0x00AD, 0xAD, // SOFT HYPHEN 0x00B0, 0xB0, // DEGREE SIGN 0x00B1, 0xB1, // PLUS-MINUS SIGN 0x00B2, 0xB2, // SUPERSCRIPT TWO 0x00B3, 0xB3, // SUPERSCRIPT THREE 0x00B7, 0xB7, // MIDDLE DOT 0x00BB, 0xBB, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00BD, 0xBD, // VULGAR FRACTION ONE HALF 0x037A, 0xAA, // GREEK YPOGEGRAMMENI 0x0384, 0xB4, // GREEK TONOS 0x0385, 0xB5, // GREEK DIALYTIKA TONOS 0x0386, 0xB6, // GREEK CAPITAL LETTER ALPHA WITH TONOS 0x0388, 0xB8, // GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, 0xB9, // GREEK CAPITAL LETTER ETA WITH TONOS 0x038A, 0xBA, // GREEK CAPITAL LETTER IOTA WITH TONOS 0x038C, 0xBC, // GREEK CAPITAL LETTER OMICRON WITH TONOS 0x038E, 0xBE, // GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038F, 0xBF, // GREEK CAPITAL LETTER OMEGA WITH TONOS 0x0390, 0xC0, // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 0x0391, 0xC1, // GREEK CAPITAL LETTER ALPHA 0x0392, 0xC2, // GREEK CAPITAL LETTER BETA 0x0393, 0xC3, // GREEK CAPITAL LETTER GAMMA 0x0394, 0xC4, // GREEK CAPITAL LETTER DELTA 0x0395, 0xC5, // GREEK CAPITAL LETTER EPSILON 0x0396, 0xC6, // GREEK CAPITAL LETTER ZETA 0x0397, 0xC7, // GREEK CAPITAL LETTER ETA 0x0398, 0xC8, // GREEK CAPITAL LETTER THETA 0x0399, 0xC9, // GREEK CAPITAL LETTER IOTA 0x039A, 0xCA, // GREEK CAPITAL LETTER KAPPA 0x039B, 0xCB, // GREEK CAPITAL LETTER LAMDA 0x039C, 0xCC, // GREEK CAPITAL LETTER MU 0x039D, 0xCD, // GREEK CAPITAL LETTER NU 0x039E, 0xCE, // GREEK CAPITAL LETTER XI 0x039F, 0xCF, // GREEK CAPITAL LETTER OMICRON 0x03A0, 0xD0, // GREEK CAPITAL LETTER PI 0x03A1, 0xD1, // GREEK CAPITAL LETTER RHO 0x03A3, 0xD3, // GREEK CAPITAL LETTER SIGMA 0x03A4, 0xD4, // GREEK CAPITAL LETTER TAU 0x03A5, 0xD5, // GREEK CAPITAL LETTER UPSILON 0x03A6, 0xD6, // GREEK CAPITAL LETTER PHI 0x03A7, 0xD7, // GREEK CAPITAL LETTER CHI 0x03A8, 0xD8, // GREEK CAPITAL LETTER PSI 0x03A9, 0xD9, // GREEK CAPITAL LETTER OMEGA 0x03AA, 0xDA, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03AB, 0xDB, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x03AC, 0xDC, // GREEK SMALL LETTER ALPHA WITH TONOS 0x03AD, 0xDD, // GREEK SMALL LETTER EPSILON WITH TONOS 0x03AE, 0xDE, // GREEK SMALL LETTER ETA WITH TONOS 0x03AF, 0xDF, // GREEK SMALL LETTER IOTA WITH TONOS 0x03B0, 0xE0, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 0x03B1, 0xE1, // GREEK SMALL LETTER ALPHA 0x03B2, 0xE2, // GREEK SMALL LETTER BETA 0x03B3, 0xE3, // GREEK SMALL LETTER GAMMA 0x03B4, 0xE4, // GREEK SMALL LETTER DELTA 0x03B5, 0xE5, // GREEK SMALL LETTER EPSILON 0x03B6, 0xE6, // GREEK SMALL LETTER ZETA 0x03B7, 0xE7, // GREEK SMALL LETTER ETA 0x03B8, 0xE8, // GREEK SMALL LETTER THETA 0x03B9, 0xE9, // GREEK SMALL LETTER IOTA 0x03BA, 0xEA, // GREEK SMALL LETTER KAPPA 0x03BB, 0xEB, // GREEK SMALL LETTER LAMDA 0x03BC, 0xEC, // GREEK SMALL LETTER MU 0x03BD, 0xED, // GREEK SMALL LETTER NU 0x03BE, 0xEE, // GREEK SMALL LETTER XI 0x03BF, 0xEF, // GREEK SMALL LETTER OMICRON 0x03C0, 0xF0, // GREEK SMALL LETTER PI 0x03C1, 0xF1, // GREEK SMALL LETTER RHO 0x03C2, 0xF2, // GREEK SMALL LETTER FINAL SIGMA 0x03C3, 0xF3, // GREEK SMALL LETTER SIGMA 0x03C4, 0xF4, // GREEK SMALL LETTER TAU 0x03C5, 0xF5, // GREEK SMALL LETTER UPSILON 0x03C6, 0xF6, // GREEK SMALL LETTER PHI 0x03C7, 0xF7, // GREEK SMALL LETTER CHI 0x03C8, 0xF8, // GREEK SMALL LETTER PSI 0x03C9, 0xF9, // GREEK SMALL LETTER OMEGA 0x03CA, 0xFA, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03CB, 0xFB, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03CC, 0xFC, // GREEK SMALL LETTER OMICRON WITH TONOS 0x03CD, 0xFD, // GREEK SMALL LETTER UPSILON WITH TONOS 0x03CE, 0xFE, // GREEK SMALL LETTER OMEGA WITH TONOS 0x2015, 0xAF, // HORIZONTAL BAR 0x2018, 0xA1, // LEFT SINGLE QUOTATION MARK 0x2019, 0xA2, // RIGHT SINGLE QUOTATION MARK 0x20AC, 0xA4, // EURO SIGN 0x20AF, 0xA5 // DRACHMA SIGN }; const static unsigned short from737[] = { 0x0391, // GREEK CAPITAL LETTER ALPHA 0x0392, // GREEK CAPITAL LETTER BETA 0x0393, // GREEK CAPITAL LETTER GAMMA 0x0394, // GREEK CAPITAL LETTER DELTA 0x0395, // GREEK CAPITAL LETTER EPSILON 0x0396, // GREEK CAPITAL LETTER ZETA 0x0397, // GREEK CAPITAL LETTER ETA 0x0398, // GREEK CAPITAL LETTER THETA 0x0399, // GREEK CAPITAL LETTER IOTA 0x039a, // GREEK CAPITAL LETTER KAPPA 0x039b, // GREEK CAPITAL LETTER LAMDA 0x039c, // GREEK CAPITAL LETTER MU 0x039d, // GREEK CAPITAL LETTER NU 0x039e, // GREEK CAPITAL LETTER XI 0x039f, // GREEK CAPITAL LETTER OMICRON 0x03a0, // GREEK CAPITAL LETTER PI 0x03a1, // GREEK CAPITAL LETTER RHO 0x03a3, // GREEK CAPITAL LETTER SIGMA 0x03a4, // GREEK CAPITAL LETTER TAU 0x03a5, // GREEK CAPITAL LETTER UPSILON 0x03a6, // GREEK CAPITAL LETTER PHI 0x03a7, // GREEK CAPITAL LETTER CHI 0x03a8, // GREEK CAPITAL LETTER PSI 0x03a9, // GREEK CAPITAL LETTER OMEGA 0x03b1, // GREEK SMALL LETTER ALPHA 0x03b2, // GREEK SMALL LETTER BETA 0x03b3, // GREEK SMALL LETTER GAMMA 0x03b4, // GREEK SMALL LETTER DELTA 0x03b5, // GREEK SMALL LETTER EPSILON 0x03b6, // GREEK SMALL LETTER ZETA 0x03b7, // GREEK SMALL LETTER ETA 0x03b8, // GREEK SMALL LETTER THETA 0x03b9, // GREEK SMALL LETTER IOTA 0x03ba, // GREEK SMALL LETTER KAPPA 0x03bb, // GREEK SMALL LETTER LAMDA 0x03bc, // GREEK SMALL LETTER MU 0x03bd, // GREEK SMALL LETTER NU 0x03be, // GREEK SMALL LETTER XI 0x03bf, // GREEK SMALL LETTER OMICRON 0x03c0, // GREEK SMALL LETTER PI 0x03c1, // GREEK SMALL LETTER RHO 0x03c3, // GREEK SMALL LETTER SIGMA 0x03c2, // GREEK SMALL LETTER FINAL SIGMA 0x03c4, // GREEK SMALL LETTER TAU 0x03c5, // GREEK SMALL LETTER UPSILON 0x03c6, // GREEK SMALL LETTER PHI 0x03c7, // GREEK SMALL LETTER CHI 0x03c8, // GREEK SMALL LETTER PSI 0x2591, // LIGHT SHADE 0x2592, // MEDIUM SHADE 0x2593, // DARK SHADE 0x2502, // BOX DRAWINGS LIGHT VERTICAL 0x2524, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x2561, // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE 0x2562, // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE 0x2556, // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE 0x2555, // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE 0x2563, // BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2551, // BOX DRAWINGS DOUBLE VERTICAL 0x2557, // BOX DRAWINGS DOUBLE DOWN AND LEFT 0x255d, // BOX DRAWINGS DOUBLE UP AND LEFT 0x255c, // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE 0x255b, // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE 0x2510, // BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, // BOX DRAWINGS LIGHT UP AND RIGHT 0x2534, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x252c, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x251c, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2500, // BOX DRAWINGS LIGHT HORIZONTAL 0x253c, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x255e, // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE 0x255f, // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE 0x255a, // BOX DRAWINGS DOUBLE UP AND RIGHT 0x2554, // BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2569, // BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x2566, // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2560, // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2550, // BOX DRAWINGS DOUBLE HORIZONTAL 0x256c, // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x2567, // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE 0x2568, // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE 0x2564, // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE 0x2565, // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE 0x2559, // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE 0x2558, // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE 0x2552, // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE 0x2553, // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE 0x256b, // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE 0x256a, // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE 0x2518, // BOX DRAWINGS LIGHT UP AND LEFT 0x250c, // BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2588, // FULL BLOCK 0x2584, // LOWER HALF BLOCK 0x258c, // LEFT HALF BLOCK 0x2590, // RIGHT HALF BLOCK 0x2580, // UPPER HALF BLOCK 0x03c9, // GREEK SMALL LETTER OMEGA 0x03ac, // GREEK SMALL LETTER ALPHA WITH TONOS 0x03ad, // GREEK SMALL LETTER EPSILON WITH TONOS 0x03ae, // GREEK SMALL LETTER ETA WITH TONOS 0x03ca, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03af, // GREEK SMALL LETTER IOTA WITH TONOS 0x03cc, // GREEK SMALL LETTER OMICRON WITH TONOS 0x03cd, // GREEK SMALL LETTER UPSILON WITH TONOS 0x03cb, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03ce, // GREEK SMALL LETTER OMEGA WITH TONOS 0x0386, // GREEK CAPITAL LETTER ALPHA WITH TONOS 0x0388, // GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, // GREEK CAPITAL LETTER ETA WITH TONOS 0x038a, // GREEK CAPITAL LETTER IOTA WITH TONOS 0x038c, // GREEK CAPITAL LETTER OMICRON WITH TONOS 0x038e, // GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038f, // GREEK CAPITAL LETTER OMEGA WITH TONOS 0x00b1, // PLUS-MINUS SIGN 0x2265, // GREATER-THAN OR EQUAL TO 0x2264, // LESS-THAN OR EQUAL TO 0x03aa, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03ab, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x00f7, // DIVISION SIGN 0x2248, // ALMOST EQUAL TO 0x00b0, // DEGREE SIGN 0x2219, // BULLET OPERATOR 0x00b7, // MIDDLE DOT 0x221a, // SQUARE ROOT 0x207f, // SUPERSCRIPT LATIN SMALL LETTER N 0x00b2, // SUPERSCRIPT TWO 0x25a0, // BLACK SQUARE 0x00a0 // NO-BREAK SPACE }; static const CharSetCvt::MapEnt to737[] = { 0x00a0, 0xff, // NO-BREAK SPACE 0x00b0, 0xf8, // DEGREE SIGN 0x00b1, 0xf1, // PLUS-MINUS SIGN 0x00b2, 0xfd, // SUPERSCRIPT TWO 0x00b7, 0xfa, // MIDDLE DOT 0x00f7, 0xf6, // DIVISION SIGN 0x0386, 0xea, // GREEK CAPITAL LETTER ALPHA WITH TONOS 0x0388, 0xeb, // GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, 0xec, // GREEK CAPITAL LETTER ETA WITH TONOS 0x038a, 0xed, // GREEK CAPITAL LETTER IOTA WITH TONOS 0x038c, 0xee, // GREEK CAPITAL LETTER OMICRON WITH TONOS 0x038e, 0xef, // GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038f, 0xf0, // GREEK CAPITAL LETTER OMEGA WITH TONOS 0x0391, 0x80, // GREEK CAPITAL LETTER ALPHA 0x0392, 0x81, // GREEK CAPITAL LETTER BETA 0x0393, 0x82, // GREEK CAPITAL LETTER GAMMA 0x0394, 0x83, // GREEK CAPITAL LETTER DELTA 0x0395, 0x84, // GREEK CAPITAL LETTER EPSILON 0x0396, 0x85, // GREEK CAPITAL LETTER ZETA 0x0397, 0x86, // GREEK CAPITAL LETTER ETA 0x0398, 0x87, // GREEK CAPITAL LETTER THETA 0x0399, 0x88, // GREEK CAPITAL LETTER IOTA 0x039a, 0x89, // GREEK CAPITAL LETTER KAPPA 0x039b, 0x8a, // GREEK CAPITAL LETTER LAMDA 0x039c, 0x8b, // GREEK CAPITAL LETTER MU 0x039d, 0x8c, // GREEK CAPITAL LETTER NU 0x039e, 0x8d, // GREEK CAPITAL LETTER XI 0x039f, 0x8e, // GREEK CAPITAL LETTER OMICRON 0x03a0, 0x8f, // GREEK CAPITAL LETTER PI 0x03a1, 0x90, // GREEK CAPITAL LETTER RHO 0x03a3, 0x91, // GREEK CAPITAL LETTER SIGMA 0x03a4, 0x92, // GREEK CAPITAL LETTER TAU 0x03a5, 0x93, // GREEK CAPITAL LETTER UPSILON 0x03a6, 0x94, // GREEK CAPITAL LETTER PHI 0x03a7, 0x95, // GREEK CAPITAL LETTER CHI 0x03a8, 0x96, // GREEK CAPITAL LETTER PSI 0x03a9, 0x97, // GREEK CAPITAL LETTER OMEGA 0x03aa, 0xf4, // GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03ab, 0xf5, // GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x03ac, 0xe1, // GREEK SMALL LETTER ALPHA WITH TONOS 0x03ad, 0xe2, // GREEK SMALL LETTER EPSILON WITH TONOS 0x03ae, 0xe3, // GREEK SMALL LETTER ETA WITH TONOS 0x03af, 0xe5, // GREEK SMALL LETTER IOTA WITH TONOS 0x03b1, 0x98, // GREEK SMALL LETTER ALPHA 0x03b2, 0x99, // GREEK SMALL LETTER BETA 0x03b3, 0x9a, // GREEK SMALL LETTER GAMMA 0x03b4, 0x9b, // GREEK SMALL LETTER DELTA 0x03b5, 0x9c, // GREEK SMALL LETTER EPSILON 0x03b6, 0x9d, // GREEK SMALL LETTER ZETA 0x03b7, 0x9e, // GREEK SMALL LETTER ETA 0x03b8, 0x9f, // GREEK SMALL LETTER THETA 0x03b9, 0xa0, // GREEK SMALL LETTER IOTA 0x03ba, 0xa1, // GREEK SMALL LETTER KAPPA 0x03bb, 0xa2, // GREEK SMALL LETTER LAMDA 0x03bc, 0xa3, // GREEK SMALL LETTER MU 0x03bd, 0xa4, // GREEK SMALL LETTER NU 0x03be, 0xa5, // GREEK SMALL LETTER XI 0x03bf, 0xa6, // GREEK SMALL LETTER OMICRON 0x03c0, 0xa7, // GREEK SMALL LETTER PI 0x03c1, 0xa8, // GREEK SMALL LETTER RHO 0x03c2, 0xaa, // GREEK SMALL LETTER FINAL SIGMA 0x03c3, 0xa9, // GREEK SMALL LETTER SIGMA 0x03c4, 0xab, // GREEK SMALL LETTER TAU 0x03c5, 0xac, // GREEK SMALL LETTER UPSILON 0x03c6, 0xad, // GREEK SMALL LETTER PHI 0x03c7, 0xae, // GREEK SMALL LETTER CHI 0x03c8, 0xaf, // GREEK SMALL LETTER PSI 0x03c9, 0xe0, // GREEK SMALL LETTER OMEGA 0x03ca, 0xe4, // GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03cb, 0xe8, // GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03cc, 0xe6, // GREEK SMALL LETTER OMICRON WITH TONOS 0x03cd, 0xe7, // GREEK SMALL LETTER UPSILON WITH TONOS 0x03ce, 0xe9, // GREEK SMALL LETTER OMEGA WITH TONOS 0x207f, 0xfc, // SUPERSCRIPT LATIN SMALL LETTER N 0x2219, 0xf9, // BULLET OPERATOR 0x221a, 0xfb, // SQUARE ROOT 0x2248, 0xf7, // ALMOST EQUAL TO 0x2264, 0xf3, // LESS-THAN OR EQUAL TO 0x2265, 0xf2, // GREATER-THAN OR EQUAL TO 0x2500, 0xc4, // BOX DRAWINGS LIGHT HORIZONTAL 0x2502, 0xb3, // BOX DRAWINGS LIGHT VERTICAL 0x250c, 0xda, // BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2510, 0xbf, // BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, 0xc0, // BOX DRAWINGS LIGHT UP AND RIGHT 0x2518, 0xd9, // BOX DRAWINGS LIGHT UP AND LEFT 0x251c, 0xc3, // BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2524, 0xb4, // BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x252c, 0xc2, // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x2534, 0xc1, // BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x253c, 0xc5, // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x2550, 0xcd, // BOX DRAWINGS DOUBLE HORIZONTAL 0x2551, 0xba, // BOX DRAWINGS DOUBLE VERTICAL 0x2552, 0xd5, // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE 0x2553, 0xd6, // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE 0x2554, 0xc9, // BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2555, 0xb8, // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE 0x2556, 0xb7, // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE 0x2557, 0xbb, // BOX DRAWINGS DOUBLE DOWN AND LEFT 0x2558, 0xd4, // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE 0x2559, 0xd3, // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE 0x255a, 0xc8, // BOX DRAWINGS DOUBLE UP AND RIGHT 0x255b, 0xbe, // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE 0x255c, 0xbd, // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE 0x255d, 0xbc, // BOX DRAWINGS DOUBLE UP AND LEFT 0x255e, 0xc6, // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE 0x255f, 0xc7, // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE 0x2560, 0xcc, // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2561, 0xb5, // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE 0x2562, 0xb6, // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE 0x2563, 0xb9, // BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2564, 0xd1, // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE 0x2565, 0xd2, // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE 0x2566, 0xcb, // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2567, 0xcf, // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE 0x2568, 0xd0, // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE 0x2569, 0xca, // BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x256a, 0xd8, // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE 0x256b, 0xd7, // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE 0x256c, 0xce, // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x2580, 0xdf, // UPPER HALF BLOCK 0x2584, 0xdc, // LOWER HALF BLOCK 0x2588, 0xdb, // FULL BLOCK 0x258c, 0xdd, // LEFT HALF BLOCK 0x2590, 0xde, // RIGHT HALF BLOCK 0x2591, 0xb0, // LIGHT SHADE 0x2592, 0xb1, // MEDIUM SHADE 0x2593, 0xb2, // DARK SHADE 0x25a0, 0xfe // BLACK SQUARE }; static const struct SimpleCharSet simples[] = { to437, 128, from437, 0x80, toMACROMAN, 128, fromMACROMAN, 0x80, to8859_15, 96, from8859_15, 0xa0, to8859_5, 96, from8859_5, 0xa0, toKOI8_R, 128, fromKOI8_R, 0x80, toCP1251, 127, fromCP1251, 0x80, toCP1252, 123, fromCP1252, 0x80, to850, 128, from850, 0x80, to858, 128, from858, 0x80, toCP1253, 111, fromCP1253, 0x80, to8859_7, 93, from8859_7, 0xa0, to737, 128, from737, 0x80 }; CharSetCvtUTF8toSimple::CharSetCvtUTF8toSimple(int i) : charinfo(simples+i) {} CharSetCvtSimpletoUTF8::CharSetCvtSimpletoUTF8(int i) : charinfo(simples+i) {} int CharSetCvtUTF8to8859_1::Cvt(const char **sourcestart, const char *sourceend, char **targetstart, char *targetend) { unsigned int v; while (*sourcestart < sourceend && *targetstart < targetend) { v = **sourcestart & 0xff; if (v & 0x80) { int l = bytesFromUTF8[v]; if (l + *sourcestart >= sourceend) { lasterr = PARTIALCHAR; break; } if (v == 0xc2) **targetstart = *++*sourcestart; else if (v == 0xc3) **targetstart = *++*sourcestart + 0x40; else if (checkBOM && v == 0xef && ((*sourcestart)[1] & 0xff) == 0xbb && ((*sourcestart)[2] & 0xff) == 0xbf) { checkBOM = 0; *sourcestart += 3; continue; // suppress BOM } else // out of range { lasterr = NOMAPPING; break; } # ifdef STRICT_UTF8 if (**targetstart > 0) { // this should have been a high-bit byte lasterr = NOMAPPING; --*sourcestart; break; } # endif } else { **targetstart = v; } ++charcnt; if( v == '\n' ) { ++linecnt; charcnt = 0; } ++*sourcestart; ++*targetstart; checkBOM = 0; } return 0; } CharSetCvt * CharSetCvt8859_1toUTF8::Clone() { return new CharSetCvt8859_1toUTF8; } CharSetCvt * CharSetCvt8859_1toUTF8::ReverseCvt() { return new CharSetCvtUTF8to8859_1; } int CharSetCvt8859_1toUTF8::Cvt(const char **sourcestart, const char *sourceend, char **targetstart, char *targetend) { unsigned int v; while (*sourcestart < sourceend && *targetstart < targetend) { v = **sourcestart & 0xff; if (v & 0x80) { if (1 + *targetstart == targetend) { lasterr = PARTIALCHAR; break; } if (v >= 0xc0) { **targetstart = 0xc3; v -= 0x40; } else **targetstart = 0xc2; *++*targetstart = v; } else **targetstart = v; ++charcnt; if( v == '\n' ) { ++linecnt; charcnt = 0; } ++*targetstart; ++*sourcestart; } return 0; } CharSetCvt * CharSetCvtUTF8to8859_1::Clone() { return new CharSetCvtUTF8to8859_1; } CharSetCvt * CharSetCvtUTF8to8859_1::ReverseCvt() { return new CharSetCvt8859_1toUTF8; }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 18760 | rlranft |
Populate -o //guest/perforce_software/p4/... //guest/rlranft/p4/.... |
||
//guest/perforce_software/p4/2014-1/i18n/simplecvt.cc | |||||
#1 | 15902 | Matt Attaway | A second renaming that I will not obliterate as a badge of shame | ||
//guest/perforce_software/p4/2014_1/i18n/simplecvt.cc | |||||
#1 | 15901 | Matt Attaway | Clean up code to fit modern Workshop naming standards | ||
//guest/perforce_software/p4/2014.1/i18n/simplecvt.cc | |||||
#1 | 12188 | Matt Attaway | Move 'main' p4 into a release specific directory in prep for new releases | ||
//guest/perforce_software/p4/i18n/simplecvt.cc | |||||
#1 | 9129 | Matt Attaway | Initial commit of the 2014.1 p4/p4api source code |