gcc/libgcobol/charmaps.cc

1588 lines
70 KiB
C++

// This file is included in both the libgcobol and gcc/cobol compilations
/*
* Copyright (c) 2021-2025 Symas Corporation
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of the Symas Corporation nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <iconv.h>
#include <cctype>
#include <clocale>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <unordered_map>
#include <vector>
#include "ec.h"
#include "common-defs.h"
#include "io.h"
#include "gcobolio.h"
#include "valconv.h"
#include "charmaps.h"
#include "encodings.h"
// These values are in the ASCII space.
int __gg__decimal_point = '.' ;
int __gg__decimal_separator = ',' ;
int __gg__quote_character = '"' ;
int __gg__low_value_character = 0x00 ;
int __gg__high_value_character = 0xFF ;
std::vector<std::string> __gg__currency_signs(256) ;
int __gg__default_currency_sign;
char *__gg__ct_currency_signs[256]; // Compile-time currency signs
cbl_encoding_t __gg__display_encoding = no_encoding_e;
cbl_encoding_t __gg__national_encoding = no_encoding_e;
// First: single-byte-coded (SBC) character sets:
// 7-bit ASCII is a subset of the various ISO/IEC 8859 code pages.
// 8859 is a subset of code page 1252.
// CP1252 is informally, and improperly, known as the "ANSI" code set. In
// modern usage, when somebody says "8859-1", they almost invariably are
// referring to a CP1252 code set.
// EBCDIC is also an SBC character set. IBM's original "international EBCDIC"
// code set was Code Page 37, which did not have a Euro sign. Code Page 1140
// is the same as CP37, but with the Euro sign replacing the "universal
// currency symbol" at position 0x9F. The table below maps the 256 values of
// CodePage 1140 to the 256 values of CodePage 1252 in a way that allows for
// "round trip" conversion without any loss.
// See https://en.wikipedia.org/w/index.php?title=Code_page_37&oldid=1082467670,
// The modern world increasingly uses UTF-8, which is in conflict with ordinary
// COBOL's inherently single-byte nature. In UTF-8, the encoding for a Euro
// sign is three bytes (U+20AC encodes to E2 A2 AC). In single-byte CP1252, the
// Euro is encoded as 0x80.
// So, we are going to assume that internally, the generated COBOL executable
// operates in code page 1252 or [hopefully some day] code page 1140.
// We will convert output, as in DISPLAY <something> from the internal character
// set to the running machine's locale (for now, that locale will be assumed to
// be 1252/8859 if it isn't UTF-8).
// And we will take some pains to figure out if the source code file was done
// as UTF-8; if not, we will assume 1252/8859-1
#define UNICODE_REPLACEMENT 0xFFFD // This a white question mark in a black diamond
#define ASCII_REPLACEMENT 0x87 // In CP1252, 0x87 is a double-dagger
// This table is the default one-to-one mapping that's used, for example, when
// starting with ASCII and doing ASCII comparisons:
const unsigned short
__gg__one_to_one_values[256] =
{
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
};
// This table can be used for converting EBCDIC values to CP1252.
// There is an unfortunate caveat, one that undoubtedly will have unintended
// consequences. But COBOL has has the concept of a HIGH-VALUE, a character
// that theoretically tests alphanumercially greater than all other characters.
// In the CP1252 code page, the default HIGH-VALUE (it can be changed by the
// ALPHABET clause is 0xFF, which is displayed as the character 'ÿ'). In the
// EBCDIC code page 1140, that character is an EO control code.
// So. In order that the default HIGH-VALUE once and always is 0xFF, these
// two tables have been modified slightly so that 0xFF always maps to 0xFF
// Programmers who use the ALPHABET clause to change the HIGH-VALUE are on their
// own.
const unsigned short
__gg__cp1140_to_cp1252_values[256] =
{
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
0xA4, 0x81, 0x82, 0x83, 0x84, 0x0A, 0x17, 0x1B, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 0x98, 0x99, 0x9A, 0x9B, 0x14, 0x15, 0x9E, 0x1A,
0x20, 0xA0, 0xE2, 0xE4, 0xE0, 0xE1, 0xE3, 0xE5, 0xE7, 0xF1, 0xA2, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
0x26, 0xE9, 0xEA, 0xEB, 0xE8, 0xED, 0xEE, 0xEF, 0xEC, 0xDF, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAC,
0x2D, 0x2F, 0xC2, 0xC4, 0xC0, 0xC1, 0xC3, 0xC5, 0xC7, 0xD1, 0xA6, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
0xF8, 0xC9, 0xCA, 0xCB, 0xC8, 0xCD, 0xCE, 0xCF, 0xCC, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
0xD8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0xAB, 0xBB, 0xF0, 0xFD, 0xFE, 0xB1,
0xB0, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0xAA, 0xBA, 0xE6, 0xB8, 0xC6, 0x80,
0xB5, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0xBF, 0xD0, 0xDD, 0xDE, 0xAE,
0x5E, 0xA3, 0xA5, 0xB7, 0xA9, 0xA7, 0xB6, 0xBC, 0xBD, 0xBE, 0x5B, 0x5D, 0xAF, 0xA8, 0xB4, 0xD7,
0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0xAD, 0xF4, 0xF6, 0xF2, 0xF3, 0xF5,
0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0xB9, 0xFB, 0xFC, 0xF9, 0xFA, 0xFF,
0x5C, 0xF7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0xB2, 0xD4, 0xD6, 0xD2, 0xD3, 0xD5,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xB3, 0xDB, 0xDC, 0xD9, 0xDA, /*0x9F*/ 0xFF,
};
// This table is the mirror image of cp1140_to_cp1252_values, except for the
// above-mentioned 0xFF
const unsigned short
__gg__cp1252_to_cp1140_values[256] =
{
0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F, 0x16, 0x05, 0x25, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26, 0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,
0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D, 0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,
0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xBA, 0xE0, 0xBB, 0xB0, 0x6D,
0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xC0, 0x4F, 0xD0, 0xA1, 0x07,
0x9F, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x09, 0x0A, 0x1B,
0x30, 0x31, 0x1A, 0x33, 0x34, 0x35, 0x36, 0x08, 0x38, 0x39, 0x3A, 0x3B, 0x04, 0x14, 0x3E, 0xFF,
0x41, 0xAA, 0x4A, 0xB1, 0x20, 0xB2, 0x6A, 0xB5, 0xBD, 0xB4, 0x9A, 0x8A, 0x5F, 0xCA, 0xAF, 0xBC,
0x90, 0x8F, 0xEA, 0xFA, 0xBE, 0xA0, 0xB6, 0xB3, 0x9D, 0xDA, 0x9B, 0x8B, 0xB7, 0xB8, 0xB9, 0xAB,
0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9E, 0x68, 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
0xAC, 0x69, 0xED, 0xEE, 0xEB, 0xEF, 0xEC, 0xBF, 0x80, 0xFD, 0xFE, 0xFB, 0xFC, 0xAD, 0xAE, 0x59,
0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9C, 0x48, 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
0x8C, 0x49, 0xCD, 0xCE, 0xCB, 0xCF, 0xCC, 0xE1, 0x70, 0xDD, 0xDE, 0xDB, 0xDC, 0x8D, 0x8E, /*0xDF*/ 0xFF,
};
// This is the EBCDIC collating sequence when the internal character set is CP1252. It's actually
// a copy of __gg__cp1252_to_cp1140_values, but modified so that 0xFF maps to 0xFF.
// Doing this meant swapping the CP1252 upper-Y-umlaut with lower-Y-umlaut.
const unsigned short
__gg__cp1252_to_ebcdic_collation[256] =
{
0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
0x9f, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, 0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xdf,
0x41, 0xaa, 0x4a, 0xb1, 0x20, 0xb2, 0x6a, 0xb5, 0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc,
0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, 0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59,
0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xff,
};
// When using the EBCDIC internal character set, but if told to use the ASCII collating sequence,
// this table can be used. It's based on the __gg__cp1140_to_cp1252_values, but with the two
// characters at locations DF and FF swapped so that the HIGH-VALUE 0xFF maps to 0xFF.
const unsigned short
__gg__ebcdic_to_cp1252_collation[256] =
{
0x00, 0x01, 0x02, 0x03, 0x9C, 0x09, 0x86, 0x7F, 0x97, 0x8D, 0x8E, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x9D, 0x85, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8F, 0x1C, 0x1D, 0x1E, 0x1F,
0xA4, 0x81, 0x82, 0x83, 0x84, 0x0A, 0x17, 0x1B, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x05, 0x06, 0x07,
0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 0x98, 0x99, 0x9A, 0x9B, 0x14, 0x15, 0x9E, 0x1A,
0x20, 0xA0, 0xE2, 0xE4, 0xE0, 0xE1, 0xE3, 0xE5, 0xE7, 0xF1, 0xA2, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
0x26, 0xE9, 0xEA, 0xEB, 0xE8, 0xED, 0xEE, 0xEF, 0xEC, 0xDF, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAC,
0x2D, 0x2F, 0xC2, 0xC4, 0xC0, 0xC1, 0xC3, 0xC5, 0xC7, 0xD1, 0xA6, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
0xF8, 0xC9, 0xCA, 0xCB, 0xC8, 0xCD, 0xCE, 0xCF, 0xCC, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
0xD8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0xAB, 0xBB, 0xF0, 0xFD, 0xFE, 0xB1,
0xB0, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0xAA, 0xBA, 0xE6, 0xB8, 0xC6, 0x80,
0xB5, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0xBF, 0xD0, 0xDD, 0xDE, 0xAE,
0x5E, 0xA3, 0xA5, 0xB7, 0xA9, 0xA7, 0xB6, 0xBC, 0xBD, 0xBE, 0x5B, 0x5D, 0xAF, 0xA8, 0xB4, 0xD7,
0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0xAD, 0xF4, 0xF6, 0xF2, 0xF3, 0xF5,
0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0xB9, 0xFB, 0xFC, 0xF9, 0xFA, 0xDF,
0x5C, 0xF7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0xB2, 0xD4, 0xD6, 0xD2, 0xD3, 0xD5,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xB3, 0xDB, 0xDC, 0xD9, 0xDA, 0xFF,
};
static encodings_t encodings[] = {
{ false, iconv_437_e, "437" },
{ false, iconv_500_e, "500" },
{ false, iconv_500V1_e, "500V1" },
{ false, iconv_850_e, "850" },
{ false, iconv_851_e, "851" },
{ false, iconv_852_e, "852" },
{ false, iconv_855_e, "855" },
{ false, iconv_856_e, "856" },
{ false, iconv_857_e, "857" },
{ false, iconv_858_e, "858" },
{ false, iconv_860_e, "860" },
{ false, iconv_861_e, "861" },
{ false, iconv_862_e, "862" },
{ false, iconv_863_e, "863" },
{ false, iconv_864_e, "864" },
{ false, iconv_865_e, "865" },
{ false, iconv_866_e, "866" },
{ false, iconv_866NAV_e, "866NAV" },
{ false, iconv_869_e, "869" },
{ false, iconv_874_e, "874" },
{ false, iconv_904_e, "904" },
{ false, iconv_1026_e, "1026" },
{ false, iconv_1046_e, "1046" },
{ false, iconv_1047_e, "1047" },
{ false, iconv_8859_1_e, "8859_1" },
{ false, iconv_8859_2_e, "8859_2" },
{ false, iconv_8859_3_e, "8859_3" },
{ false, iconv_8859_4_e, "8859_4" },
{ false, iconv_8859_5_e, "8859_5" },
{ false, iconv_8859_6_e, "8859_6" },
{ false, iconv_8859_7_e, "8859_7" },
{ false, iconv_8859_8_e, "8859_8" },
{ false, iconv_8859_9_e, "8859_9" },
{ false, iconv_10646_1_1993_e, "10646-1:1993" },
{ false, iconv_10646_1_1993_e, "UCS4/ 10646-1:1993/UCS4/" },
{ false, iconv_ANSI_X3_4_1968_e, "ANSI_X3.4-1968" },
{ false, iconv_ANSI_X3_4_1986_e, "ANSI_X3.4-1986" },
{ false, iconv_ANSI_X3_4_e, "ANSI_X3.4" },
{ false, iconv_ANSI_X3_110_1983_e, "ANSI_X3.110-1983" },
{ false, iconv_ANSI_X3_110_e, "ANSI_X3.110" },
{ false, iconv_ARABIC_e, "ARABIC" },
{ false, iconv_ARABIC7_e, "ARABIC7" },
{ false, iconv_ARMSCII_8_e, "ARMSCII-8" },
{ false, iconv_ARMSCII8_e, "ARMSCII8" },
{ true, iconv_ASCII_e, "ASCII" },
{ false, iconv_ASMO_708_e, "ASMO-708" },
{ false, iconv_ASMO_449_e, "ASMO_449" },
{ false, iconv_BALTIC_e, "BALTIC" },
{ false, iconv_BIG_5_e, "BIG-5" },
{ false, iconv_BIG_FIVE_e, "BIG-FIVE" },
{ false, iconv_BIG5_HKSCS_e, "BIG5-HKSCS" },
{ false, iconv_BIG5_e, "BIG5" },
{ false, iconv_BIG5HKSCS_e, "BIG5HKSCS" },
{ false, iconv_BIGFIVE_e, "BIGFIVE" },
{ false, iconv_BRF_e, "BRF" },
{ false, iconv_BS_4730_e, "BS_4730" },
{ false, iconv_CA_e, "CA" },
{ false, iconv_CN_BIG5_e, "CN-BIG5" },
{ false, iconv_CN_GB_e, "CN-GB" },
{ false, iconv_CN_e, "CN" },
{ false, iconv_CP_AR_e, "CP-AR" },
{ false, iconv_CP_GR_e, "CP-GR" },
{ false, iconv_CP_HU_e, "CP-HU" },
{ false, iconv_CP037_e, "CP037" },
{ false, iconv_CP038_e, "CP038" },
{ false, iconv_CP273_e, "CP273" },
{ false, iconv_CP274_e, "CP274" },
{ false, iconv_CP275_e, "CP275" },
{ false, iconv_CP278_e, "CP278" },
{ false, iconv_CP280_e, "CP280" },
{ false, iconv_CP281_e, "CP281" },
{ false, iconv_CP282_e, "CP282" },
{ false, iconv_CP284_e, "CP284" },
{ false, iconv_CP285_e, "CP285" },
{ false, iconv_CP290_e, "CP290" },
{ false, iconv_CP297_e, "CP297" },
{ false, iconv_CP367_e, "CP367" },
{ false, iconv_CP420_e, "CP420" },
{ false, iconv_CP423_e, "CP423" },
{ false, iconv_CP424_e, "CP424" },
{ false, iconv_CP437_e, "CP437" },
{ false, iconv_CP500_e, "CP500" },
{ false, iconv_CP737_e, "CP737" },
{ false, iconv_CP770_e, "CP770" },
{ false, iconv_CP771_e, "CP771" },
{ false, iconv_CP772_e, "CP772" },
{ false, iconv_CP773_e, "CP773" },
{ false, iconv_CP774_e, "CP774" },
{ false, iconv_CP775_e, "CP775" },
{ false, iconv_CP803_e, "CP803" },
{ false, iconv_CP813_e, "CP813" },
{ false, iconv_CP819_e, "CP819" },
{ false, iconv_CP850_e, "CP850" },
{ false, iconv_CP851_e, "CP851" },
{ false, iconv_CP852_e, "CP852" },
{ false, iconv_CP855_e, "CP855" },
{ false, iconv_CP856_e, "CP856" },
{ false, iconv_CP857_e, "CP857" },
{ false, iconv_CP858_e, "CP858" },
{ false, iconv_CP860_e, "CP860" },
{ false, iconv_CP861_e, "CP861" },
{ false, iconv_CP862_e, "CP862" },
{ false, iconv_CP863_e, "CP863" },
{ false, iconv_CP864_e, "CP864" },
{ false, iconv_CP865_e, "CP865" },
{ false, iconv_CP866_e, "CP866" },
{ false, iconv_CP866NAV_e, "CP866NAV" },
{ false, iconv_CP868_e, "CP868" },
{ false, iconv_CP869_e, "CP869" },
{ false, iconv_CP870_e, "CP870" },
{ false, iconv_CP871_e, "CP871" },
{ false, iconv_CP874_e, "CP874" },
{ false, iconv_CP875_e, "CP875" },
{ false, iconv_CP880_e, "CP880" },
{ false, iconv_CP891_e, "CP891" },
{ false, iconv_CP901_e, "CP901" },
{ false, iconv_CP902_e, "CP902" },
{ false, iconv_CP903_e, "CP903" },
{ false, iconv_CP904_e, "CP904" },
{ false, iconv_CP905_e, "CP905" },
{ false, iconv_CP912_e, "CP912" },
{ false, iconv_CP915_e, "CP915" },
{ false, iconv_CP916_e, "CP916" },
{ false, iconv_CP918_e, "CP918" },
{ false, iconv_CP920_e, "CP920" },
{ false, iconv_CP921_e, "CP921" },
{ false, iconv_CP922_e, "CP922" },
{ false, iconv_CP930_e, "CP930" },
{ false, iconv_CP932_e, "CP932" },
{ false, iconv_CP933_e, "CP933" },
{ false, iconv_CP935_e, "CP935" },
{ false, iconv_CP936_e, "CP936" },
{ false, iconv_CP937_e, "CP937" },
{ false, iconv_CP939_e, "CP939" },
{ false, iconv_CP949_e, "CP949" },
{ false, iconv_CP950_e, "CP950" },
{ false, iconv_CP1004_e, "CP1004" },
{ false, iconv_CP1008_e, "CP1008" },
{ false, iconv_CP1025_e, "CP1025" },
{ false, iconv_CP1026_e, "CP1026" },
{ false, iconv_CP1046_e, "CP1046" },
{ false, iconv_CP1047_e, "CP1047" },
{ false, iconv_CP1070_e, "CP1070" },
{ false, iconv_CP1079_e, "CP1079" },
{ false, iconv_CP1081_e, "CP1081" },
{ false, iconv_CP1084_e, "CP1084" },
{ false, iconv_CP1089_e, "CP1089" },
{ false, iconv_CP1097_e, "CP1097" },
{ false, iconv_CP1112_e, "CP1112" },
{ false, iconv_CP1122_e, "CP1122" },
{ false, iconv_CP1123_e, "CP1123" },
{ false, iconv_CP1124_e, "CP1124" },
{ false, iconv_CP1125_e, "CP1125" },
{ false, iconv_CP1129_e, "CP1129" },
{ false, iconv_CP1130_e, "CP1130" },
{ false, iconv_CP1132_e, "CP1132" },
{ false, iconv_CP1133_e, "CP1133" },
{ false, iconv_CP1137_e, "CP1137" },
{ true, iconv_CP1140_e, "CP1140" },
{ false, iconv_CP1141_e, "CP1141" },
{ false, iconv_CP1142_e, "CP1142" },
{ false, iconv_CP1143_e, "CP1143" },
{ false, iconv_CP1144_e, "CP1144" },
{ false, iconv_CP1145_e, "CP1145" },
{ false, iconv_CP1146_e, "CP1146" },
{ false, iconv_CP1147_e, "CP1147" },
{ false, iconv_CP1148_e, "CP1148" },
{ false, iconv_CP1149_e, "CP1149" },
{ false, iconv_CP1153_e, "CP1153" },
{ false, iconv_CP1154_e, "CP1154" },
{ false, iconv_CP1155_e, "CP1155" },
{ false, iconv_CP1156_e, "CP1156" },
{ false, iconv_CP1157_e, "CP1157" },
{ false, iconv_CP1158_e, "CP1158" },
{ false, iconv_CP1160_e, "CP1160" },
{ false, iconv_CP1161_e, "CP1161" },
{ false, iconv_CP1162_e, "CP1162" },
{ false, iconv_CP1163_e, "CP1163" },
{ false, iconv_CP1164_e, "CP1164" },
{ false, iconv_CP1166_e, "CP1166" },
{ false, iconv_CP1167_e, "CP1167" },
{ false, iconv_CP1250_e, "CP1250" },
{ false, iconv_CP1251_e, "CP1251" },
{ true, iconv_CP1252_e, "CP1252" },
{ false, iconv_CP1253_e, "CP1253" },
{ false, iconv_CP1254_e, "CP1254" },
{ false, iconv_CP1255_e, "CP1255" },
{ false, iconv_CP1256_e, "CP1256" },
{ false, iconv_CP1257_e, "CP1257" },
{ false, iconv_CP1258_e, "CP1258" },
{ false, iconv_CP1282_e, "CP1282" },
{ false, iconv_CP1361_e, "CP1361" },
{ false, iconv_CP1364_e, "CP1364" },
{ false, iconv_CP1371_e, "CP1371" },
{ false, iconv_CP1388_e, "CP1388" },
{ false, iconv_CP1390_e, "CP1390" },
{ false, iconv_CP1399_e, "CP1399" },
{ false, iconv_CP4517_e, "CP4517" },
{ false, iconv_CP4899_e, "CP4899" },
{ false, iconv_CP4909_e, "CP4909" },
{ false, iconv_CP4971_e, "CP4971" },
{ false, iconv_CP5347_e, "CP5347" },
{ false, iconv_CP9030_e, "CP9030" },
{ false, iconv_CP9066_e, "CP9066" },
{ false, iconv_CP9448_e, "CP9448" },
{ false, iconv_CP10007_e, "CP10007" },
{ false, iconv_CP12712_e, "CP12712" },
{ false, iconv_CP16804_e, "CP16804" },
{ false, iconv_CPIBM861_e, "CPIBM861" },
{ false, iconv_CSA7_1_e, "CSA7-1" },
{ false, iconv_CSA7_2_e, "CSA7-2" },
{ false, iconv_CSASCII_e, "CSASCII" },
{ false, iconv_CSA_T500_1983_e, "CSA_T500-1983" },
{ false, iconv_CSA_T500_e, "CSA_T500" },
{ false, iconv_CSA_Z243_4_1985_1_e, "CSA_Z243.4-1985-1" },
{ false, iconv_CSA_Z243_4_1985_2_e, "CSA_Z243.4-1985-2" },
{ false, iconv_CSA_Z243_419851_e, "CSA_Z243.419851" },
{ false, iconv_CSA_Z243_419852_e, "CSA_Z243.419852" },
{ false, iconv_CSDECMCS_e, "CSDECMCS" },
{ false, iconv_CSEBCDICATDE_e, "CSEBCDICATDE" },
{ false, iconv_CSEBCDICATDEA_e, "CSEBCDICATDEA" },
{ false, iconv_CSEBCDICCAFR_e, "CSEBCDICCAFR" },
{ false, iconv_CSEBCDICDKNO_e, "CSEBCDICDKNO" },
{ false, iconv_CSEBCDICDKNOA_e, "CSEBCDICDKNOA" },
{ false, iconv_CSEBCDICES_e, "CSEBCDICES" },
{ false, iconv_CSEBCDICESA_e, "CSEBCDICESA" },
{ false, iconv_CSEBCDICESS_e, "CSEBCDICESS" },
{ false, iconv_CSEBCDICFISE_e, "CSEBCDICFISE" },
{ false, iconv_CSEBCDICFISEA_e, "CSEBCDICFISEA" },
{ false, iconv_CSEBCDICFR_e, "CSEBCDICFR" },
{ false, iconv_CSEBCDICIT_e, "CSEBCDICIT" },
{ false, iconv_CSEBCDICPT_e, "CSEBCDICPT" },
{ false, iconv_CSEBCDICUK_e, "CSEBCDICUK" },
{ false, iconv_CSEBCDICUS_e, "CSEBCDICUS" },
{ false, iconv_CSEUCKR_e, "CSEUCKR" },
{ false, iconv_CSEUCPKDFMTJAPANESE_e, "CSEUCPKDFMTJAPANESE" },
{ false, iconv_CSGB2312_e, "CSGB2312" },
{ false, iconv_CSHPROMAN8_e, "CSHPROMAN8" },
{ false, iconv_CSIBM037_e, "CSIBM037" },
{ false, iconv_CSIBM038_e, "CSIBM038" },
{ false, iconv_CSIBM273_e, "CSIBM273" },
{ false, iconv_CSIBM274_e, "CSIBM274" },
{ false, iconv_CSIBM275_e, "CSIBM275" },
{ false, iconv_CSIBM277_e, "CSIBM277" },
{ false, iconv_CSIBM278_e, "CSIBM278" },
{ false, iconv_CSIBM280_e, "CSIBM280" },
{ false, iconv_CSIBM281_e, "CSIBM281" },
{ false, iconv_CSIBM284_e, "CSIBM284" },
{ false, iconv_CSIBM285_e, "CSIBM285" },
{ false, iconv_CSIBM290_e, "CSIBM290" },
{ false, iconv_CSIBM297_e, "CSIBM297" },
{ false, iconv_CSIBM420_e, "CSIBM420" },
{ false, iconv_CSIBM423_e, "CSIBM423" },
{ false, iconv_CSIBM424_e, "CSIBM424" },
{ false, iconv_CSIBM500_e, "CSIBM500" },
{ false, iconv_CSIBM803_e, "CSIBM803" },
{ false, iconv_CSIBM851_e, "CSIBM851" },
{ false, iconv_CSIBM855_e, "CSIBM855" },
{ false, iconv_CSIBM856_e, "CSIBM856" },
{ false, iconv_CSIBM857_e, "CSIBM857" },
{ false, iconv_CSIBM860_e, "CSIBM860" },
{ false, iconv_CSIBM863_e, "CSIBM863" },
{ false, iconv_CSIBM864_e, "CSIBM864" },
{ false, iconv_CSIBM865_e, "CSIBM865" },
{ false, iconv_CSIBM866_e, "CSIBM866" },
{ false, iconv_CSIBM868_e, "CSIBM868" },
{ false, iconv_CSIBM869_e, "CSIBM869" },
{ false, iconv_CSIBM870_e, "CSIBM870" },
{ false, iconv_CSIBM871_e, "CSIBM871" },
{ false, iconv_CSIBM880_e, "CSIBM880" },
{ false, iconv_CSIBM891_e, "CSIBM891" },
{ false, iconv_CSIBM901_e, "CSIBM901" },
{ false, iconv_CSIBM902_e, "CSIBM902" },
{ false, iconv_CSIBM903_e, "CSIBM903" },
{ false, iconv_CSIBM904_e, "CSIBM904" },
{ false, iconv_CSIBM905_e, "CSIBM905" },
{ false, iconv_CSIBM918_e, "CSIBM918" },
{ false, iconv_CSIBM921_e, "CSIBM921" },
{ false, iconv_CSIBM922_e, "CSIBM922" },
{ false, iconv_CSIBM930_e, "CSIBM930" },
{ false, iconv_CSIBM932_e, "CSIBM932" },
{ false, iconv_CSIBM933_e, "CSIBM933" },
{ false, iconv_CSIBM935_e, "CSIBM935" },
{ false, iconv_CSIBM937_e, "CSIBM937" },
{ false, iconv_CSIBM939_e, "CSIBM939" },
{ false, iconv_CSIBM943_e, "CSIBM943" },
{ false, iconv_CSIBM1008_e, "CSIBM1008" },
{ false, iconv_CSIBM1025_e, "CSIBM1025" },
{ false, iconv_CSIBM1026_e, "CSIBM1026" },
{ false, iconv_CSIBM1097_e, "CSIBM1097" },
{ false, iconv_CSIBM1112_e, "CSIBM1112" },
{ false, iconv_CSIBM1122_e, "CSIBM1122" },
{ false, iconv_CSIBM1123_e, "CSIBM1123" },
{ false, iconv_CSIBM1124_e, "CSIBM1124" },
{ false, iconv_CSIBM1129_e, "CSIBM1129" },
{ false, iconv_CSIBM1130_e, "CSIBM1130" },
{ false, iconv_CSIBM1132_e, "CSIBM1132" },
{ false, iconv_CSIBM1133_e, "CSIBM1133" },
{ false, iconv_CSIBM1137_e, "CSIBM1137" },
{ false, iconv_CSIBM1140_e, "CSIBM1140" },
{ false, iconv_CSIBM1141_e, "CSIBM1141" },
{ false, iconv_CSIBM1142_e, "CSIBM1142" },
{ false, iconv_CSIBM1143_e, "CSIBM1143" },
{ false, iconv_CSIBM1144_e, "CSIBM1144" },
{ false, iconv_CSIBM1145_e, "CSIBM1145" },
{ false, iconv_CSIBM1146_e, "CSIBM1146" },
{ false, iconv_CSIBM1147_e, "CSIBM1147" },
{ false, iconv_CSIBM1148_e, "CSIBM1148" },
{ false, iconv_CSIBM1149_e, "CSIBM1149" },
{ false, iconv_CSIBM1153_e, "CSIBM1153" },
{ false, iconv_CSIBM1154_e, "CSIBM1154" },
{ false, iconv_CSIBM1155_e, "CSIBM1155" },
{ false, iconv_CSIBM1156_e, "CSIBM1156" },
{ false, iconv_CSIBM1157_e, "CSIBM1157" },
{ false, iconv_CSIBM1158_e, "CSIBM1158" },
{ false, iconv_CSIBM1160_e, "CSIBM1160" },
{ false, iconv_CSIBM1161_e, "CSIBM1161" },
{ false, iconv_CSIBM1163_e, "CSIBM1163" },
{ false, iconv_CSIBM1164_e, "CSIBM1164" },
{ false, iconv_CSIBM1166_e, "CSIBM1166" },
{ false, iconv_CSIBM1167_e, "CSIBM1167" },
{ false, iconv_CSIBM1364_e, "CSIBM1364" },
{ false, iconv_CSIBM1371_e, "CSIBM1371" },
{ false, iconv_CSIBM1388_e, "CSIBM1388" },
{ false, iconv_CSIBM1390_e, "CSIBM1390" },
{ false, iconv_CSIBM1399_e, "CSIBM1399" },
{ false, iconv_CSIBM4517_e, "CSIBM4517" },
{ false, iconv_CSIBM4899_e, "CSIBM4899" },
{ false, iconv_CSIBM4909_e, "CSIBM4909" },
{ false, iconv_CSIBM4971_e, "CSIBM4971" },
{ false, iconv_CSIBM5347_e, "CSIBM5347" },
{ false, iconv_CSIBM9030_e, "CSIBM9030" },
{ false, iconv_CSIBM9066_e, "CSIBM9066" },
{ false, iconv_CSIBM9448_e, "CSIBM9448" },
{ false, iconv_CSIBM12712_e, "CSIBM12712" },
{ false, iconv_CSIBM16804_e, "CSIBM16804" },
{ false, iconv_CSIBM11621162_e, "CSIBM11621162" },
{ false, iconv_CSISO4UNITEDKINGDOM_e, "CSISO4UNITEDKINGDOM" },
{ false, iconv_CSISO10SWEDISH_e, "CSISO10SWEDISH" },
{ false, iconv_CSISO11SWEDISHFORNAMES_e, "CSISO11SWEDISHFORNAMES" },
{ false, iconv_CSISO14JISC6220RO_e, "CSISO14JISC6220RO" },
{ false, iconv_CSISO15ITALIAN_e, "CSISO15ITALIAN" },
{ false, iconv_CSISO16PORTUGESE_e, "CSISO16PORTUGESE" },
{ false, iconv_CSISO17SPANISH_e, "CSISO17SPANISH" },
{ false, iconv_CSISO18GREEK7OLD_e, "CSISO18GREEK7OLD" },
{ false, iconv_CSISO19LATINGREEK_e, "CSISO19LATINGREEK" },
{ false, iconv_CSISO21GERMAN_e, "CSISO21GERMAN" },
{ false, iconv_CSISO25FRENCH_e, "CSISO25FRENCH" },
{ false, iconv_CSISO27LATINGREEK1_e, "CSISO27LATINGREEK1" },
{ false, iconv_CSISO49INIS_e, "CSISO49INIS" },
{ false, iconv_CSISO50INIS8_e, "CSISO50INIS8" },
{ false, iconv_CSISO51INISCYRILLIC_e, "CSISO51INISCYRILLIC" },
{ false, iconv_CSISO58GB1988_e, "CSISO58GB1988" },
{ false, iconv_CSISO60DANISHNORWEGIAN_e, "CSISO60DANISHNORWEGIAN" },
{ false, iconv_CSISO60NORWEGIAN1_e, "CSISO60NORWEGIAN1" },
{ false, iconv_CSISO61NORWEGIAN2_e, "CSISO61NORWEGIAN2" },
{ false, iconv_CSISO69FRENCH_e, "CSISO69FRENCH" },
{ false, iconv_CSISO84PORTUGUESE2_e, "CSISO84PORTUGUESE2" },
{ false, iconv_CSISO85SPANISH2_e, "CSISO85SPANISH2" },
{ false, iconv_CSISO86HUNGARIAN_e, "CSISO86HUNGARIAN" },
{ false, iconv_CSISO88GREEK7_e, "CSISO88GREEK7" },
{ false, iconv_CSISO89ASMO449_e, "CSISO89ASMO449" },
{ false, iconv_CSISO90_e, "CSISO90" },
{ false, iconv_CSISO92JISC62991984B_e, "CSISO92JISC62991984B" },
{ false, iconv_CSISO99NAPLPS_e, "CSISO99NAPLPS" },
{ false, iconv_CSISO103T618BIT_e, "CSISO103T618BIT" },
{ false, iconv_CSISO111ECMACYRILLIC_e, "CSISO111ECMACYRILLIC" },
{ false, iconv_CSISO121CANADIAN1_e, "CSISO121CANADIAN1" },
{ false, iconv_CSISO122CANADIAN2_e, "CSISO122CANADIAN2" },
{ false, iconv_CSISO139CSN369103_e, "CSISO139CSN369103" },
{ false, iconv_CSISO141JUSIB1002_e, "CSISO141JUSIB1002" },
{ false, iconv_CSISO143IECP271_e, "CSISO143IECP271" },
{ false, iconv_CSISO150_e, "CSISO150" },
{ false, iconv_CSISO150GREEKCCITT_e, "CSISO150GREEKCCITT" },
{ false, iconv_CSISO151CUBA_e, "CSISO151CUBA" },
{ false, iconv_CSISO153GOST1976874_e, "CSISO153GOST1976874" },
{ false, iconv_CSISO646DANISH_e, "CSISO646DANISH" },
{ false, iconv_CSISO2022CN_e, "CSISO2022CN" },
{ false, iconv_CSISO2022JP_e, "CSISO2022JP" },
{ false, iconv_CSISO2022JP2_e, "CSISO2022JP2" },
{ false, iconv_CSISO2022KR_e, "CSISO2022KR" },
{ false, iconv_CSISO2033_e, "CSISO2033" },
{ false, iconv_CSISO5427CYRILLIC_e, "CSISO5427CYRILLIC" },
{ false, iconv_CSISO5427CYRILLIC1981_e, "CSISO5427CYRILLIC1981" },
{ false, iconv_CSISO5428GREEK_e, "CSISO5428GREEK" },
{ false, iconv_CSISO10367BOX_e, "CSISO10367BOX" },
{ false, iconv_CSISOLATIN1_e, "CSISOLATIN1" },
{ false, iconv_CSISOLATIN2_e, "CSISOLATIN2" },
{ false, iconv_CSISOLATIN3_e, "CSISOLATIN3" },
{ false, iconv_CSISOLATIN4_e, "CSISOLATIN4" },
{ false, iconv_CSISOLATIN5_e, "CSISOLATIN5" },
{ false, iconv_CSISOLATIN6_e, "CSISOLATIN6" },
{ false, iconv_CSISOLATINARABIC_e, "CSISOLATINARABIC" },
{ false, iconv_CSISOLATINCYRILLIC_e, "CSISOLATINCYRILLIC" },
{ false, iconv_CSISOLATINGREEK_e, "CSISOLATINGREEK" },
{ false, iconv_CSISOLATINHEBREW_e, "CSISOLATINHEBREW" },
{ false, iconv_CSKOI8R_e, "CSKOI8R" },
{ false, iconv_CSKSC5636_e, "CSKSC5636" },
{ false, iconv_CSMACINTOSH_e, "CSMACINTOSH" },
{ false, iconv_CSNATSDANO_e, "CSNATSDANO" },
{ false, iconv_CSNATSSEFI_e, "CSNATSSEFI" },
{ false, iconv_CSN_369103_e, "CSN_369103" },
{ false, iconv_CSPC8CODEPAGE437_e, "CSPC8CODEPAGE437" },
{ false, iconv_CSPC775BALTIC_e, "CSPC775BALTIC" },
{ false, iconv_CSPC850MULTILINGUAL_e, "CSPC850MULTILINGUAL" },
{ false, iconv_CSPC858MULTILINGUAL_e, "CSPC858MULTILINGUAL" },
{ false, iconv_CSPC862LATINHEBREW_e, "CSPC862LATINHEBREW" },
{ false, iconv_CSPCP852_e, "CSPCP852" },
{ false, iconv_CSSHIFTJIS_e, "CSSHIFTJIS" },
{ false, iconv_CSUCS4_e, "CSUCS4" },
{ false, iconv_CSUNICODE_e, "CSUNICODE" },
{ false, iconv_CSWINDOWS31J_e, "CSWINDOWS31J" },
{ false, iconv_CUBA_e, "CUBA" },
{ false, iconv_CWI_2_e, "CWI-2" },
{ false, iconv_CWI_e, "CWI" },
{ false, iconv_CYRILLIC_e, "CYRILLIC" },
{ false, iconv_DE_e, "DE" },
{ false, iconv_DEC_MCS_e, "DEC-MCS" },
{ false, iconv_DEC_e, "DEC" },
{ false, iconv_DECMCS_e, "DECMCS" },
{ false, iconv_DIN_66003_e, "DIN_66003" },
{ false, iconv_DK_e, "DK" },
{ false, iconv_DS2089_e, "DS2089" },
{ false, iconv_DS_2089_e, "DS_2089" },
{ false, iconv_E13B_e, "E13B" },
{ false, iconv_EBCDIC_AT_DE_A_e, "EBCDIC-AT-DE-A" },
{ false, iconv_EBCDIC_AT_DE_e, "EBCDIC-AT-DE" },
{ false, iconv_EBCDIC_BE_e, "EBCDIC-BE" },
{ false, iconv_EBCDIC_BR_e, "EBCDIC-BR" },
{ false, iconv_EBCDIC_CA_FR_e, "EBCDIC-CA-FR" },
{ false, iconv_EBCDIC_CP_AR1_e, "EBCDIC-CP-AR1" },
{ false, iconv_EBCDIC_CP_AR2_e, "EBCDIC-CP-AR2" },
{ false, iconv_EBCDIC_CP_BE_e, "EBCDIC-CP-BE" },
{ false, iconv_EBCDIC_CP_CA_e, "EBCDIC-CP-CA" },
{ false, iconv_EBCDIC_CP_CH_e, "EBCDIC-CP-CH" },
{ false, iconv_EBCDIC_CP_DK_e, "EBCDIC-CP-DK" },
{ false, iconv_EBCDIC_CP_ES_e, "EBCDIC-CP-ES" },
{ false, iconv_EBCDIC_CP_FI_e, "EBCDIC-CP-FI" },
{ false, iconv_EBCDIC_CP_FR_e, "EBCDIC-CP-FR" },
{ false, iconv_EBCDIC_CP_GB_e, "EBCDIC-CP-GB" },
{ false, iconv_EBCDIC_CP_GR_e, "EBCDIC-CP-GR" },
{ false, iconv_EBCDIC_CP_HE_e, "EBCDIC-CP-HE" },
{ false, iconv_EBCDIC_CP_IS_e, "EBCDIC-CP-IS" },
{ false, iconv_EBCDIC_CP_IT_e, "EBCDIC-CP-IT" },
{ false, iconv_EBCDIC_CP_NL_e, "EBCDIC-CP-NL" },
{ false, iconv_EBCDIC_CP_NO_e, "EBCDIC-CP-NO" },
{ false, iconv_EBCDIC_CP_ROECE_e, "EBCDIC-CP-ROECE" },
{ false, iconv_EBCDIC_CP_SE_e, "EBCDIC-CP-SE" },
{ false, iconv_EBCDIC_CP_TR_e, "EBCDIC-CP-TR" },
{ false, iconv_EBCDIC_CP_US_e, "EBCDIC-CP-US" },
{ false, iconv_EBCDIC_CP_WT_e, "EBCDIC-CP-WT" },
{ false, iconv_EBCDIC_CP_YU_e, "EBCDIC-CP-YU" },
{ false, iconv_EBCDIC_CYRILLIC_e, "EBCDIC-CYRILLIC" },
{ false, iconv_EBCDIC_DK_NO_A_e, "EBCDIC-DK-NO-A" },
{ false, iconv_EBCDIC_DK_NO_e, "EBCDIC-DK-NO" },
{ false, iconv_EBCDIC_ES_A_e, "EBCDIC-ES-A" },
{ false, iconv_EBCDIC_ES_S_e, "EBCDIC-ES-S" },
{ false, iconv_EBCDIC_ES_e, "EBCDIC-ES" },
{ false, iconv_EBCDIC_FI_SE_A_e, "EBCDIC-FI-SE-A" },
{ false, iconv_EBCDIC_FI_SE_e, "EBCDIC-FI-SE" },
{ false, iconv_EBCDIC_FR_e, "EBCDIC-FR" },
{ false, iconv_EBCDIC_GREEK_e, "EBCDIC-GREEK" },
{ false, iconv_EBCDIC_INT_e, "EBCDIC-INT" },
{ false, iconv_EBCDIC_INT1_e, "EBCDIC-INT1" },
{ false, iconv_EBCDIC_IS_FRISS_e, "EBCDIC-IS-FRISS" },
{ false, iconv_EBCDIC_IT_e, "EBCDIC-IT" },
{ false, iconv_EBCDIC_JP_E_e, "EBCDIC-JP-E" },
{ false, iconv_EBCDIC_JP_KANA_e, "EBCDIC-JP-KANA" },
{ false, iconv_EBCDIC_PT_e, "EBCDIC-PT" },
{ false, iconv_EBCDIC_UK_e, "EBCDIC-UK" },
{ false, iconv_EBCDIC_US_e, "EBCDIC-US" },
{ false, iconv_EBCDICATDE_e, "EBCDICATDE" },
{ false, iconv_EBCDICATDEA_e, "EBCDICATDEA" },
{ false, iconv_EBCDICCAFR_e, "EBCDICCAFR" },
{ false, iconv_EBCDICDKNO_e, "EBCDICDKNO" },
{ false, iconv_EBCDICDKNOA_e, "EBCDICDKNOA" },
{ false, iconv_EBCDICES_e, "EBCDICES" },
{ false, iconv_EBCDICESA_e, "EBCDICESA" },
{ false, iconv_EBCDICESS_e, "EBCDICESS" },
{ false, iconv_EBCDICFISE_e, "EBCDICFISE" },
{ false, iconv_EBCDICFISEA_e, "EBCDICFISEA" },
{ false, iconv_EBCDICFR_e, "EBCDICFR" },
{ false, iconv_EBCDICISFRISS_e, "EBCDICISFRISS" },
{ false, iconv_EBCDICIT_e, "EBCDICIT" },
{ false, iconv_EBCDICPT_e, "EBCDICPT" },
{ false, iconv_EBCDICUK_e, "EBCDICUK" },
{ false, iconv_EBCDICUS_e, "EBCDICUS" },
{ false, iconv_ECMA_114_e, "ECMA-114" },
{ false, iconv_ECMA_118_e, "ECMA-118" },
{ false, iconv_ECMA_128_e, "ECMA-128" },
{ false, iconv_ECMA_CYRILLIC_e, "ECMA-CYRILLIC" },
{ false, iconv_ECMACYRILLIC_e, "ECMACYRILLIC" },
{ false, iconv_ELOT_928_e, "ELOT_928" },
{ false, iconv_ES_e, "ES" },
{ false, iconv_ES2_e, "ES2" },
{ false, iconv_EUC_CN_e, "EUC-CN" },
{ false, iconv_EUC_JISX0213_e, "EUC-JISX0213" },
{ false, iconv_EUC_JP_MS_e, "EUC-JP-MS" },
{ false, iconv_EUC_JP_e, "EUC-JP" },
{ false, iconv_EUC_KR_e, "EUC-KR" },
{ false, iconv_EUC_TW_e, "EUC-TW" },
{ false, iconv_EUCCN_e, "EUCCN" },
{ false, iconv_EUCJP_MS_e, "EUCJP-MS" },
{ false, iconv_EUCJP_OPEN_e, "EUCJP-OPEN" },
{ false, iconv_EUCJP_WIN_e, "EUCJP-WIN" },
{ false, iconv_EUCJP_e, "EUCJP" },
{ false, iconv_EUCKR_e, "EUCKR" },
{ false, iconv_EUCTW_e, "EUCTW" },
{ false, iconv_FI_e, "FI" },
{ false, iconv_FR_e, "FR" },
{ false, iconv_GB_e, "GB" },
{ false, iconv_GB2312_e, "GB2312" },
{ false, iconv_GB13000_e, "GB13000" },
{ false, iconv_GB18030_e, "GB18030" },
{ false, iconv_GBK_e, "GBK" },
{ false, iconv_GB_1988_80_e, "GB_1988-80" },
{ false, iconv_GB_198880_e, "GB_198880" },
{ false, iconv_GEORGIAN_ACADEMY_e, "GEORGIAN-ACADEMY" },
{ false, iconv_GEORGIAN_PS_e, "GEORGIAN-PS" },
{ false, iconv_GOST_19768_74_e, "GOST_19768-74" },
{ false, iconv_GOST_19768_e, "GOST_19768" },
{ false, iconv_GOST_1976874_e, "GOST_1976874" },
{ false, iconv_GREEK_CCITT_e, "GREEK-CCITT" },
{ false, iconv_GREEK_e, "GREEK" },
{ false, iconv_GREEK7_OLD_e, "GREEK7-OLD" },
{ false, iconv_GREEK7_e, "GREEK7" },
{ false, iconv_GREEK7OLD_e, "GREEK7OLD" },
{ false, iconv_GREEK8_e, "GREEK8" },
{ false, iconv_GREEKCCITT_e, "GREEKCCITT" },
{ false, iconv_HEBREW_e, "HEBREW" },
{ false, iconv_HP_GREEK8_e, "HP-GREEK8" },
{ false, iconv_HP_ROMAN8_e, "HP-ROMAN8" },
{ false, iconv_HP_ROMAN9_e, "HP-ROMAN9" },
{ false, iconv_HP_THAI8_e, "HP-THAI8" },
{ false, iconv_HP_TURKISH8_e, "HP-TURKISH8" },
{ false, iconv_HPGREEK8_e, "HPGREEK8" },
{ false, iconv_HPROMAN8_e, "HPROMAN8" },
{ false, iconv_HPROMAN9_e, "HPROMAN9" },
{ false, iconv_HPTHAI8_e, "HPTHAI8" },
{ false, iconv_HPTURKISH8_e, "HPTURKISH8" },
{ false, iconv_HU_e, "HU" },
{ false, iconv_IBM_803_e, "IBM-803" },
{ false, iconv_IBM_856_e, "IBM-856" },
{ false, iconv_IBM_901_e, "IBM-901" },
{ false, iconv_IBM_902_e, "IBM-902" },
{ false, iconv_IBM_921_e, "IBM-921" },
{ false, iconv_IBM_922_e, "IBM-922" },
{ false, iconv_IBM_930_e, "IBM-930" },
{ false, iconv_IBM_932_e, "IBM-932" },
{ false, iconv_IBM_933_e, "IBM-933" },
{ false, iconv_IBM_935_e, "IBM-935" },
{ false, iconv_IBM_937_e, "IBM-937" },
{ false, iconv_IBM_939_e, "IBM-939" },
{ false, iconv_IBM_943_e, "IBM-943" },
{ false, iconv_IBM_1008_e, "IBM-1008" },
{ false, iconv_IBM_1025_e, "IBM-1025" },
{ false, iconv_IBM_1046_e, "IBM-1046" },
{ false, iconv_IBM_1047_e, "IBM-1047" },
{ false, iconv_IBM_1097_e, "IBM-1097" },
{ false, iconv_IBM_1112_e, "IBM-1112" },
{ false, iconv_IBM_1122_e, "IBM-1122" },
{ false, iconv_IBM_1123_e, "IBM-1123" },
{ false, iconv_IBM_1124_e, "IBM-1124" },
{ false, iconv_IBM_1129_e, "IBM-1129" },
{ false, iconv_IBM_1130_e, "IBM-1130" },
{ false, iconv_IBM_1132_e, "IBM-1132" },
{ false, iconv_IBM_1133_e, "IBM-1133" },
{ false, iconv_IBM_1137_e, "IBM-1137" },
{ false, iconv_IBM_1140_e, "IBM-1140" },
{ false, iconv_IBM_1141_e, "IBM-1141" },
{ false, iconv_IBM_1142_e, "IBM-1142" },
{ false, iconv_IBM_1143_e, "IBM-1143" },
{ false, iconv_IBM_1144_e, "IBM-1144" },
{ false, iconv_IBM_1145_e, "IBM-1145" },
{ false, iconv_IBM_1146_e, "IBM-1146" },
{ false, iconv_IBM_1147_e, "IBM-1147" },
{ false, iconv_IBM_1148_e, "IBM-1148" },
{ false, iconv_IBM_1149_e, "IBM-1149" },
{ false, iconv_IBM_1153_e, "IBM-1153" },
{ false, iconv_IBM_1154_e, "IBM-1154" },
{ false, iconv_IBM_1155_e, "IBM-1155" },
{ false, iconv_IBM_1156_e, "IBM-1156" },
{ false, iconv_IBM_1157_e, "IBM-1157" },
{ false, iconv_IBM_1158_e, "IBM-1158" },
{ false, iconv_IBM_1160_e, "IBM-1160" },
{ false, iconv_IBM_1161_e, "IBM-1161" },
{ false, iconv_IBM_1162_e, "IBM-1162" },
{ false, iconv_IBM_1163_e, "IBM-1163" },
{ false, iconv_IBM_1164_e, "IBM-1164" },
{ false, iconv_IBM_1166_e, "IBM-1166" },
{ false, iconv_IBM_1167_e, "IBM-1167" },
{ false, iconv_IBM_1364_e, "IBM-1364" },
{ false, iconv_IBM_1371_e, "IBM-1371" },
{ false, iconv_IBM_1388_e, "IBM-1388" },
{ false, iconv_IBM_1390_e, "IBM-1390" },
{ false, iconv_IBM_1399_e, "IBM-1399" },
{ false, iconv_IBM_4517_e, "IBM-4517" },
{ false, iconv_IBM_4899_e, "IBM-4899" },
{ false, iconv_IBM_4909_e, "IBM-4909" },
{ false, iconv_IBM_4971_e, "IBM-4971" },
{ false, iconv_IBM_5347_e, "IBM-5347" },
{ false, iconv_IBM_9030_e, "IBM-9030" },
{ false, iconv_IBM_9066_e, "IBM-9066" },
{ false, iconv_IBM_9448_e, "IBM-9448" },
{ false, iconv_IBM_12712_e, "IBM-12712" },
{ false, iconv_IBM_16804_e, "IBM-16804" },
{ false, iconv_IBM037_e, "IBM037" },
{ false, iconv_IBM038_e, "IBM038" },
{ false, iconv_IBM256_e, "IBM256" },
{ false, iconv_IBM273_e, "IBM273" },
{ false, iconv_IBM274_e, "IBM274" },
{ false, iconv_IBM275_e, "IBM275" },
{ false, iconv_IBM277_e, "IBM277" },
{ false, iconv_IBM278_e, "IBM278" },
{ false, iconv_IBM280_e, "IBM280" },
{ false, iconv_IBM281_e, "IBM281" },
{ false, iconv_IBM284_e, "IBM284" },
{ false, iconv_IBM285_e, "IBM285" },
{ false, iconv_IBM290_e, "IBM290" },
{ false, iconv_IBM297_e, "IBM297" },
{ false, iconv_IBM367_e, "IBM367" },
{ false, iconv_IBM420_e, "IBM420" },
{ false, iconv_IBM423_e, "IBM423" },
{ false, iconv_IBM424_e, "IBM424" },
{ false, iconv_IBM437_e, "IBM437" },
{ false, iconv_IBM500_e, "IBM500" },
{ false, iconv_IBM775_e, "IBM775" },
{ false, iconv_IBM803_e, "IBM803" },
{ false, iconv_IBM813_e, "IBM813" },
{ false, iconv_IBM819_e, "IBM819" },
{ false, iconv_IBM848_e, "IBM848" },
{ false, iconv_IBM850_e, "IBM850" },
{ false, iconv_IBM851_e, "IBM851" },
{ false, iconv_IBM852_e, "IBM852" },
{ false, iconv_IBM855_e, "IBM855" },
{ false, iconv_IBM856_e, "IBM856" },
{ false, iconv_IBM857_e, "IBM857" },
{ false, iconv_IBM858_e, "IBM858" },
{ false, iconv_IBM860_e, "IBM860" },
{ false, iconv_IBM861_e, "IBM861" },
{ false, iconv_IBM862_e, "IBM862" },
{ false, iconv_IBM863_e, "IBM863" },
{ false, iconv_IBM864_e, "IBM864" },
{ false, iconv_IBM865_e, "IBM865" },
{ false, iconv_IBM866_e, "IBM866" },
{ false, iconv_IBM866NAV_e, "IBM866NAV" },
{ false, iconv_IBM868_e, "IBM868" },
{ false, iconv_IBM869_e, "IBM869" },
{ false, iconv_IBM870_e, "IBM870" },
{ false, iconv_IBM871_e, "IBM871" },
{ false, iconv_IBM874_e, "IBM874" },
{ false, iconv_IBM875_e, "IBM875" },
{ false, iconv_IBM880_e, "IBM880" },
{ false, iconv_IBM891_e, "IBM891" },
{ false, iconv_IBM901_e, "IBM901" },
{ false, iconv_IBM902_e, "IBM902" },
{ false, iconv_IBM903_e, "IBM903" },
{ false, iconv_IBM904_e, "IBM904" },
{ false, iconv_IBM905_e, "IBM905" },
{ false, iconv_IBM912_e, "IBM912" },
{ false, iconv_IBM915_e, "IBM915" },
{ false, iconv_IBM916_e, "IBM916" },
{ false, iconv_IBM918_e, "IBM918" },
{ false, iconv_IBM920_e, "IBM920" },
{ false, iconv_IBM921_e, "IBM921" },
{ false, iconv_IBM922_e, "IBM922" },
{ false, iconv_IBM930_e, "IBM930" },
{ false, iconv_IBM932_e, "IBM932" },
{ false, iconv_IBM933_e, "IBM933" },
{ false, iconv_IBM935_e, "IBM935" },
{ false, iconv_IBM937_e, "IBM937" },
{ false, iconv_IBM939_e, "IBM939" },
{ false, iconv_IBM943_e, "IBM943" },
{ false, iconv_IBM1004_e, "IBM1004" },
{ false, iconv_IBM1008_e, "IBM1008" },
{ false, iconv_IBM1025_e, "IBM1025" },
{ false, iconv_IBM1026_e, "IBM1026" },
{ false, iconv_IBM1046_e, "IBM1046" },
{ false, iconv_IBM1047_e, "IBM1047" },
{ false, iconv_IBM1089_e, "IBM1089" },
{ false, iconv_IBM1097_e, "IBM1097" },
{ false, iconv_IBM1112_e, "IBM1112" },
{ false, iconv_IBM1122_e, "IBM1122" },
{ false, iconv_IBM1123_e, "IBM1123" },
{ false, iconv_IBM1124_e, "IBM1124" },
{ false, iconv_IBM1129_e, "IBM1129" },
{ false, iconv_IBM1130_e, "IBM1130" },
{ false, iconv_IBM1132_e, "IBM1132" },
{ false, iconv_IBM1133_e, "IBM1133" },
{ false, iconv_IBM1137_e, "IBM1137" },
{ false, iconv_IBM1140_e, "IBM1140" },
{ false, iconv_IBM1141_e, "IBM1141" },
{ false, iconv_IBM1142_e, "IBM1142" },
{ false, iconv_IBM1143_e, "IBM1143" },
{ false, iconv_IBM1144_e, "IBM1144" },
{ false, iconv_IBM1145_e, "IBM1145" },
{ false, iconv_IBM1146_e, "IBM1146" },
{ false, iconv_IBM1147_e, "IBM1147" },
{ false, iconv_IBM1148_e, "IBM1148" },
{ false, iconv_IBM1149_e, "IBM1149" },
{ false, iconv_IBM1153_e, "IBM1153" },
{ false, iconv_IBM1154_e, "IBM1154" },
{ false, iconv_IBM1155_e, "IBM1155" },
{ false, iconv_IBM1156_e, "IBM1156" },
{ false, iconv_IBM1157_e, "IBM1157" },
{ false, iconv_IBM1158_e, "IBM1158" },
{ false, iconv_IBM1160_e, "IBM1160" },
{ false, iconv_IBM1161_e, "IBM1161" },
{ false, iconv_IBM1162_e, "IBM1162" },
{ false, iconv_IBM1163_e, "IBM1163" },
{ false, iconv_IBM1164_e, "IBM1164" },
{ false, iconv_IBM1166_e, "IBM1166" },
{ false, iconv_IBM1167_e, "IBM1167" },
{ false, iconv_IBM1364_e, "IBM1364" },
{ false, iconv_IBM1371_e, "IBM1371" },
{ false, iconv_IBM1388_e, "IBM1388" },
{ false, iconv_IBM1390_e, "IBM1390" },
{ false, iconv_IBM1399_e, "IBM1399" },
{ false, iconv_IBM4517_e, "IBM4517" },
{ false, iconv_IBM4899_e, "IBM4899" },
{ false, iconv_IBM4909_e, "IBM4909" },
{ false, iconv_IBM4971_e, "IBM4971" },
{ false, iconv_IBM5347_e, "IBM5347" },
{ false, iconv_IBM9030_e, "IBM9030" },
{ false, iconv_IBM9066_e, "IBM9066" },
{ false, iconv_IBM9448_e, "IBM9448" },
{ false, iconv_IBM12712_e, "IBM12712" },
{ false, iconv_IBM16804_e, "IBM16804" },
{ false, iconv_IEC_P27_1_e, "IEC_P27-1" },
{ false, iconv_IEC_P271_e, "IEC_P271" },
{ false, iconv_INIS_8_e, "INIS-8" },
{ false, iconv_INIS_CYRILLIC_e, "INIS-CYRILLIC" },
{ false, iconv_INIS_e, "INIS" },
{ false, iconv_INIS8_e, "INIS8" },
{ false, iconv_INISCYRILLIC_e, "INISCYRILLIC" },
{ false, iconv_ISIRI_3342_e, "ISIRI-3342" },
{ false, iconv_ISIRI3342_e, "ISIRI3342" },
{ false, iconv_ISO_2022_CN_EXT_e, "ISO-2022-CN-EXT" },
{ false, iconv_ISO_2022_CN_e, "ISO-2022-CN" },
{ false, iconv_ISO_2022_JP_2_e, "ISO-2022-JP-2" },
{ false, iconv_ISO_2022_JP_3_e, "ISO-2022-JP-3" },
{ false, iconv_ISO_2022_JP_e, "ISO-2022-JP" },
{ false, iconv_ISO_2022_KR_e, "ISO-2022-KR" },
{ false, iconv_ISO_8859_1_e, "ISO-8859-1" },
{ false, iconv_ISO_8859_2_e, "ISO-8859-2" },
{ false, iconv_ISO_8859_3_e, "ISO-8859-3" },
{ false, iconv_ISO_8859_4_e, "ISO-8859-4" },
{ false, iconv_ISO_8859_5_e, "ISO-8859-5" },
{ false, iconv_ISO_8859_6_e, "ISO-8859-6" },
{ false, iconv_ISO_8859_7_e, "ISO-8859-7" },
{ false, iconv_ISO_8859_8_e, "ISO-8859-8" },
{ false, iconv_ISO_8859_9_e, "ISO-8859-9" },
{ false, iconv_ISO_8859_9E_e, "ISO-8859-9E" },
{ false, iconv_ISO_8859_10_e, "ISO-8859-10" },
{ false, iconv_ISO_8859_11_e, "ISO-8859-11" },
{ false, iconv_ISO_8859_13_e, "ISO-8859-13" },
{ false, iconv_ISO_8859_14_e, "ISO-8859-14" },
{ false, iconv_ISO_8859_15_e, "ISO-8859-15" },
{ false, iconv_ISO_8859_16_e, "ISO-8859-16" },
{ true, iconv_ISO_10646_e, "ISO-10646" },
{ true, iconv_ISO_10646_e, "UCS2/ ISO-10646/UCS2/" },
{ true, iconv_ISO_10646_e, "UCS4/ ISO-10646/UCS4/" },
{ true, iconv_ISO_10646_e, "UTF-8/ ISO-10646/UTF-8/" },
{ true, iconv_ISO_10646_e, "UTF8/ ISO-10646/UTF8/" },
{ false, iconv_ISO_CELTIC_e, "ISO-CELTIC" },
{ false, iconv_ISO_IR_4_e, "ISO-IR-4" },
{ false, iconv_ISO_IR_6_e, "ISO-IR-6" },
{ false, iconv_ISO_IR_8_1_e, "ISO-IR-8-1" },
{ false, iconv_ISO_IR_9_1_e, "ISO-IR-9-1" },
{ false, iconv_ISO_IR_10_e, "ISO-IR-10" },
{ false, iconv_ISO_IR_11_e, "ISO-IR-11" },
{ false, iconv_ISO_IR_14_e, "ISO-IR-14" },
{ false, iconv_ISO_IR_15_e, "ISO-IR-15" },
{ false, iconv_ISO_IR_16_e, "ISO-IR-16" },
{ false, iconv_ISO_IR_17_e, "ISO-IR-17" },
{ false, iconv_ISO_IR_18_e, "ISO-IR-18" },
{ false, iconv_ISO_IR_19_e, "ISO-IR-19" },
{ false, iconv_ISO_IR_21_e, "ISO-IR-21" },
{ false, iconv_ISO_IR_25_e, "ISO-IR-25" },
{ false, iconv_ISO_IR_27_e, "ISO-IR-27" },
{ false, iconv_ISO_IR_37_e, "ISO-IR-37" },
{ false, iconv_ISO_IR_49_e, "ISO-IR-49" },
{ false, iconv_ISO_IR_50_e, "ISO-IR-50" },
{ false, iconv_ISO_IR_51_e, "ISO-IR-51" },
{ false, iconv_ISO_IR_54_e, "ISO-IR-54" },
{ false, iconv_ISO_IR_55_e, "ISO-IR-55" },
{ false, iconv_ISO_IR_57_e, "ISO-IR-57" },
{ false, iconv_ISO_IR_60_e, "ISO-IR-60" },
{ false, iconv_ISO_IR_61_e, "ISO-IR-61" },
{ false, iconv_ISO_IR_69_e, "ISO-IR-69" },
{ false, iconv_ISO_IR_84_e, "ISO-IR-84" },
{ false, iconv_ISO_IR_85_e, "ISO-IR-85" },
{ false, iconv_ISO_IR_86_e, "ISO-IR-86" },
{ false, iconv_ISO_IR_88_e, "ISO-IR-88" },
{ false, iconv_ISO_IR_89_e, "ISO-IR-89" },
{ false, iconv_ISO_IR_90_e, "ISO-IR-90" },
{ false, iconv_ISO_IR_92_e, "ISO-IR-92" },
{ false, iconv_ISO_IR_98_e, "ISO-IR-98" },
{ false, iconv_ISO_IR_99_e, "ISO-IR-99" },
{ false, iconv_ISO_IR_100_e, "ISO-IR-100" },
{ false, iconv_ISO_IR_101_e, "ISO-IR-101" },
{ false, iconv_ISO_IR_103_e, "ISO-IR-103" },
{ false, iconv_ISO_IR_109_e, "ISO-IR-109" },
{ false, iconv_ISO_IR_110_e, "ISO-IR-110" },
{ false, iconv_ISO_IR_111_e, "ISO-IR-111" },
{ false, iconv_ISO_IR_121_e, "ISO-IR-121" },
{ false, iconv_ISO_IR_122_e, "ISO-IR-122" },
{ false, iconv_ISO_IR_126_e, "ISO-IR-126" },
{ false, iconv_ISO_IR_127_e, "ISO-IR-127" },
{ false, iconv_ISO_IR_138_e, "ISO-IR-138" },
{ false, iconv_ISO_IR_139_e, "ISO-IR-139" },
{ false, iconv_ISO_IR_141_e, "ISO-IR-141" },
{ false, iconv_ISO_IR_143_e, "ISO-IR-143" },
{ false, iconv_ISO_IR_144_e, "ISO-IR-144" },
{ false, iconv_ISO_IR_148_e, "ISO-IR-148" },
{ false, iconv_ISO_IR_150_e, "ISO-IR-150" },
{ false, iconv_ISO_IR_151_e, "ISO-IR-151" },
{ false, iconv_ISO_IR_153_e, "ISO-IR-153" },
{ false, iconv_ISO_IR_155_e, "ISO-IR-155" },
{ false, iconv_ISO_IR_156_e, "ISO-IR-156" },
{ false, iconv_ISO_IR_157_e, "ISO-IR-157" },
{ false, iconv_ISO_IR_166_e, "ISO-IR-166" },
{ false, iconv_ISO_IR_179_e, "ISO-IR-179" },
{ false, iconv_ISO_IR_193_e, "ISO-IR-193" },
{ false, iconv_ISO_IR_197_e, "ISO-IR-197" },
{ false, iconv_ISO_IR_199_e, "ISO-IR-199" },
{ false, iconv_ISO_IR_203_e, "ISO-IR-203" },
{ false, iconv_ISO_IR_209_e, "ISO-IR-209" },
{ false, iconv_ISO_IR_226_e, "ISO-IR-226" },
{ false, iconv_ISO_e, "TR_11548-1/ ISO/TR_11548-1/" },
{ false, iconv_ISO646_CA_e, "ISO646-CA" },
{ false, iconv_ISO646_CA2_e, "ISO646-CA2" },
{ false, iconv_ISO646_CN_e, "ISO646-CN" },
{ false, iconv_ISO646_CU_e, "ISO646-CU" },
{ false, iconv_ISO646_DE_e, "ISO646-DE" },
{ false, iconv_ISO646_DK_e, "ISO646-DK" },
{ false, iconv_ISO646_ES_e, "ISO646-ES" },
{ false, iconv_ISO646_ES2_e, "ISO646-ES2" },
{ false, iconv_ISO646_FI_e, "ISO646-FI" },
{ false, iconv_ISO646_FR_e, "ISO646-FR" },
{ false, iconv_ISO646_FR1_e, "ISO646-FR1" },
{ false, iconv_ISO646_GB_e, "ISO646-GB" },
{ false, iconv_ISO646_HU_e, "ISO646-HU" },
{ false, iconv_ISO646_IT_e, "ISO646-IT" },
{ false, iconv_ISO646_JP_OCR_B_e, "ISO646-JP-OCR-B" },
{ false, iconv_ISO646_JP_e, "ISO646-JP" },
{ false, iconv_ISO646_KR_e, "ISO646-KR" },
{ false, iconv_ISO646_NO_e, "ISO646-NO" },
{ false, iconv_ISO646_NO2_e, "ISO646-NO2" },
{ false, iconv_ISO646_PT_e, "ISO646-PT" },
{ false, iconv_ISO646_PT2_e, "ISO646-PT2" },
{ false, iconv_ISO646_SE_e, "ISO646-SE" },
{ false, iconv_ISO646_SE2_e, "ISO646-SE2" },
{ false, iconv_ISO646_US_e, "ISO646-US" },
{ false, iconv_ISO646_YU_e, "ISO646-YU" },
{ false, iconv_ISO2022CN_e, "ISO2022CN" },
{ false, iconv_ISO2022CNEXT_e, "ISO2022CNEXT" },
{ false, iconv_ISO2022JP_e, "ISO2022JP" },
{ false, iconv_ISO2022JP2_e, "ISO2022JP2" },
{ false, iconv_ISO2022KR_e, "ISO2022KR" },
{ false, iconv_ISO6937_e, "ISO6937" },
{ false, iconv_ISO8859_1_e, "ISO8859-1" },
{ false, iconv_ISO8859_2_e, "ISO8859-2" },
{ false, iconv_ISO8859_3_e, "ISO8859-3" },
{ false, iconv_ISO8859_4_e, "ISO8859-4" },
{ false, iconv_ISO8859_5_e, "ISO8859-5" },
{ false, iconv_ISO8859_6_e, "ISO8859-6" },
{ false, iconv_ISO8859_7_e, "ISO8859-7" },
{ false, iconv_ISO8859_8_e, "ISO8859-8" },
{ false, iconv_ISO8859_9_e, "ISO8859-9" },
{ false, iconv_ISO8859_9E_e, "ISO8859-9E" },
{ false, iconv_ISO8859_10_e, "ISO8859-10" },
{ false, iconv_ISO8859_11_e, "ISO8859-11" },
{ false, iconv_ISO8859_13_e, "ISO8859-13" },
{ false, iconv_ISO8859_14_e, "ISO8859-14" },
{ false, iconv_ISO8859_15_e, "ISO8859-15" },
{ false, iconv_ISO8859_16_e, "ISO8859-16" },
{ false, iconv_ISO11548_1_e, "ISO11548-1" },
{ false, iconv_ISO88591_e, "ISO88591" },
{ false, iconv_ISO88592_e, "ISO88592" },
{ false, iconv_ISO88593_e, "ISO88593" },
{ false, iconv_ISO88594_e, "ISO88594" },
{ false, iconv_ISO88595_e, "ISO88595" },
{ false, iconv_ISO88596_e, "ISO88596" },
{ false, iconv_ISO88597_e, "ISO88597" },
{ false, iconv_ISO88598_e, "ISO88598" },
{ false, iconv_ISO88599_e, "ISO88599" },
{ false, iconv_ISO88599E_e, "ISO88599E" },
{ false, iconv_ISO885910_e, "ISO885910" },
{ false, iconv_ISO885911_e, "ISO885911" },
{ false, iconv_ISO885913_e, "ISO885913" },
{ false, iconv_ISO885914_e, "ISO885914" },
{ false, iconv_ISO885915_e, "ISO885915" },
{ false, iconv_ISO885916_e, "ISO885916" },
{ false, iconv_ISO_646_IRV_1991_e, "ISO_646.IRV:1991" },
{ false, iconv_ISO_2033_1983_e, "ISO_2033-1983" },
{ false, iconv_ISO_2033_e, "ISO_2033" },
{ false, iconv_ISO_5427_EXT_e, "ISO_5427-EXT" },
{ false, iconv_ISO_5427_e, "ISO_5427" },
{ false, iconv_ISO_5427_1981_e, "ISO_5427:1981" },
{ false, iconv_ISO_5427EXT_e, "ISO_5427EXT" },
{ false, iconv_ISO_5428_e, "ISO_5428" },
{ false, iconv_ISO_5428_1980_e, "ISO_5428:1980" },
{ false, iconv_ISO_6937_2_e, "ISO_6937-2" },
{ false, iconv_ISO_6937_2_1983_e, "ISO_6937-2:1983" },
{ false, iconv_ISO_6937_e, "ISO_6937" },
{ false, iconv_ISO_6937_1992_e, "ISO_6937:1992" },
{ false, iconv_ISO_8859_1_e, "ISO_8859-1" },
{ false, iconv_ISO_8859_1_1987_e, "ISO_8859-1:1987" },
{ false, iconv_ISO_8859_2_e, "ISO_8859-2" },
{ false, iconv_ISO_8859_2_1987_e, "ISO_8859-2:1987" },
{ false, iconv_ISO_8859_3_e, "ISO_8859-3" },
{ false, iconv_ISO_8859_3_1988_e, "ISO_8859-3:1988" },
{ false, iconv_ISO_8859_4_e, "ISO_8859-4" },
{ false, iconv_ISO_8859_4_1988_e, "ISO_8859-4:1988" },
{ false, iconv_ISO_8859_5_e, "ISO_8859-5" },
{ false, iconv_ISO_8859_5_1988_e, "ISO_8859-5:1988" },
{ false, iconv_ISO_8859_6_e, "ISO_8859-6" },
{ false, iconv_ISO_8859_6_1987_e, "ISO_8859-6:1987" },
{ false, iconv_ISO_8859_7_e, "ISO_8859-7" },
{ false, iconv_ISO_8859_7_1987_e, "ISO_8859-7:1987" },
{ false, iconv_ISO_8859_7_2003_e, "ISO_8859-7:2003" },
{ false, iconv_ISO_8859_8_e, "ISO_8859-8" },
{ false, iconv_ISO_8859_8_1988_e, "ISO_8859-8:1988" },
{ false, iconv_ISO_8859_9_e, "ISO_8859-9" },
{ false, iconv_ISO_8859_9_1989_e, "ISO_8859-9:1989" },
{ false, iconv_ISO_8859_9E_e, "ISO_8859-9E" },
{ false, iconv_ISO_8859_10_e, "ISO_8859-10" },
{ false, iconv_ISO_8859_10_1992_e, "ISO_8859-10:1992" },
{ false, iconv_ISO_8859_14_e, "ISO_8859-14" },
{ false, iconv_ISO_8859_14_1998_e, "ISO_8859-14:1998" },
{ false, iconv_ISO_8859_15_e, "ISO_8859-15" },
{ false, iconv_ISO_8859_15_1998_e, "ISO_8859-15:1998" },
{ false, iconv_ISO_8859_16_e, "ISO_8859-16" },
{ false, iconv_ISO_8859_16_2001_e, "ISO_8859-16:2001" },
{ false, iconv_ISO_9036_e, "ISO_9036" },
{ false, iconv_ISO_10367_BOX_e, "ISO_10367-BOX" },
{ false, iconv_ISO_10367BOX_e, "ISO_10367BOX" },
{ false, iconv_ISO_11548_1_e, "ISO_11548-1" },
{ false, iconv_ISO_69372_e, "ISO_69372" },
{ false, iconv_IT_e, "IT" },
{ false, iconv_JIS_C6220_1969_RO_e, "JIS_C6220-1969-RO" },
{ false, iconv_JIS_C6229_1984_B_e, "JIS_C6229-1984-B" },
{ false, iconv_JIS_C62201969RO_e, "JIS_C62201969RO" },
{ false, iconv_JIS_C62291984B_e, "JIS_C62291984B" },
{ false, iconv_JOHAB_e, "JOHAB" },
{ false, iconv_JP_OCR_B_e, "JP-OCR-B" },
{ false, iconv_JP_e, "JP" },
{ false, iconv_JS_e, "JS" },
{ false, iconv_JUS_I_B1_002_e, "JUS_I.B1.002" },
{ false, iconv_KOI_7_e, "KOI-7" },
{ false, iconv_KOI_8_e, "KOI-8" },
{ false, iconv_KOI8_R_e, "KOI8-R" },
{ false, iconv_KOI8_RU_e, "KOI8-RU" },
{ false, iconv_KOI8_T_e, "KOI8-T" },
{ false, iconv_KOI8_U_e, "KOI8-U" },
{ false, iconv_KOI8_e, "KOI8" },
{ false, iconv_KOI8R_e, "KOI8R" },
{ false, iconv_KOI8U_e, "KOI8U" },
{ false, iconv_KSC5636_e, "KSC5636" },
{ false, iconv_L1_e, "L1" },
{ false, iconv_L2_e, "L2" },
{ false, iconv_L3_e, "L3" },
{ false, iconv_L4_e, "L4" },
{ false, iconv_L5_e, "L5" },
{ false, iconv_L6_e, "L6" },
{ false, iconv_L7_e, "L7" },
{ false, iconv_L8_e, "L8" },
{ false, iconv_L10_e, "L10" },
{ false, iconv_LATIN_9_e, "LATIN-9" },
{ false, iconv_LATIN_GREEK_1_e, "LATIN-GREEK-1" },
{ false, iconv_LATIN_GREEK_e, "LATIN-GREEK" },
{ false, iconv_LATIN1_e, "LATIN1" },
{ false, iconv_LATIN2_e, "LATIN2" },
{ false, iconv_LATIN3_e, "LATIN3" },
{ false, iconv_LATIN4_e, "LATIN4" },
{ false, iconv_LATIN5_e, "LATIN5" },
{ false, iconv_LATIN6_e, "LATIN6" },
{ false, iconv_LATIN7_e, "LATIN7" },
{ false, iconv_LATIN8_e, "LATIN8" },
{ false, iconv_LATIN9_e, "LATIN9" },
{ false, iconv_LATIN10_e, "LATIN10" },
{ false, iconv_LATINGREEK_e, "LATINGREEK" },
{ false, iconv_LATINGREEK1_e, "LATINGREEK1" },
{ false, iconv_MAC_CENTRALEUROPE_e, "MAC-CENTRALEUROPE" },
{ false, iconv_MAC_CYRILLIC_e, "MAC-CYRILLIC" },
{ false, iconv_MAC_IS_e, "MAC-IS" },
{ false, iconv_MAC_SAMI_e, "MAC-SAMI" },
{ false, iconv_MAC_UK_e, "MAC-UK" },
{ false, iconv_MAC_e, "MAC" },
{ false, iconv_MACCYRILLIC_e, "MACCYRILLIC" },
{ false, iconv_MACINTOSH_e, "MACINTOSH" },
{ false, iconv_MACIS_e, "MACIS" },
{ false, iconv_MACUK_e, "MACUK" },
{ false, iconv_MACUKRAINIAN_e, "MACUKRAINIAN" },
{ false, iconv_MIK_e, "MIK" },
{ false, iconv_MS_ANSI_e, "MS-ANSI" },
{ false, iconv_MS_ARAB_e, "MS-ARAB" },
{ false, iconv_MS_CYRL_e, "MS-CYRL" },
{ false, iconv_MS_EE_e, "MS-EE" },
{ false, iconv_MS_GREEK_e, "MS-GREEK" },
{ false, iconv_MS_HEBR_e, "MS-HEBR" },
{ false, iconv_MS_MAC_CYRILLIC_e, "MS-MAC-CYRILLIC" },
{ false, iconv_MS_TURK_e, "MS-TURK" },
{ false, iconv_MS932_e, "MS932" },
{ false, iconv_MS936_e, "MS936" },
{ false, iconv_MSCP949_e, "MSCP949" },
{ false, iconv_MSCP1361_e, "MSCP1361" },
{ false, iconv_MSMACCYRILLIC_e, "MSMACCYRILLIC" },
{ false, iconv_MSZ_7795_3_e, "MSZ_7795.3" },
{ false, iconv_MS_KANJI_e, "MS_KANJI" },
{ false, iconv_NAPLPS_e, "NAPLPS" },
{ false, iconv_NATS_DANO_e, "NATS-DANO" },
{ false, iconv_NATS_SEFI_e, "NATS-SEFI" },
{ false, iconv_NATSDANO_e, "NATSDANO" },
{ false, iconv_NATSSEFI_e, "NATSSEFI" },
{ false, iconv_NC_NC0010_e, "NC_NC0010" },
{ false, iconv_NC_NC00_10_e, "NC_NC00-10" },
{ false, iconv_NC_NC00_10_81_e, "NC_NC00-10:81" },
{ false, iconv_NF_Z_62_010_e, "NF_Z_62-010" },
{ false, iconv_NF_Z_62_010__1973__e, "NF_Z_62-010_(1973)" },
{ false, iconv_NF_Z_62_010_1973_e, "NF_Z_62-010_1973" },
{ false, iconv_NF_Z_62010_e, "NF_Z_62010" },
{ false, iconv_NF_Z_62010_1973_e, "NF_Z_62010_1973" },
{ false, iconv_NO_e, "NO" },
{ false, iconv_NO2_e, "NO2" },
{ false, iconv_NS_4551_1_e, "NS_4551-1" },
{ false, iconv_NS_4551_2_e, "NS_4551-2" },
{ false, iconv_NS_45511_e, "NS_45511" },
{ false, iconv_NS_45512_e, "NS_45512" },
{ false, iconv_OS2LATIN1_e, "OS2LATIN1" },
{ false, iconv_OSF00010001_e, "OSF00010001" },
{ false, iconv_OSF00010002_e, "OSF00010002" },
{ false, iconv_OSF00010003_e, "OSF00010003" },
{ false, iconv_OSF00010004_e, "OSF00010004" },
{ false, iconv_OSF00010005_e, "OSF00010005" },
{ false, iconv_OSF00010006_e, "OSF00010006" },
{ false, iconv_OSF00010007_e, "OSF00010007" },
{ false, iconv_OSF00010008_e, "OSF00010008" },
{ false, iconv_OSF00010009_e, "OSF00010009" },
{ false, iconv_OSF0001000A_e, "OSF0001000A" },
{ false, iconv_OSF00010020_e, "OSF00010020" },
{ false, iconv_OSF00010100_e, "OSF00010100" },
{ false, iconv_OSF00010101_e, "OSF00010101" },
{ false, iconv_OSF00010102_e, "OSF00010102" },
{ false, iconv_OSF00010104_e, "OSF00010104" },
{ false, iconv_OSF00010105_e, "OSF00010105" },
{ false, iconv_OSF00010106_e, "OSF00010106" },
{ false, iconv_OSF00030010_e, "OSF00030010" },
{ false, iconv_OSF0004000A_e, "OSF0004000A" },
{ false, iconv_OSF0005000A_e, "OSF0005000A" },
{ false, iconv_OSF05010001_e, "OSF05010001" },
{ false, iconv_OSF100201A4_e, "OSF100201A4" },
{ false, iconv_OSF100201A8_e, "OSF100201A8" },
{ false, iconv_OSF100201B5_e, "OSF100201B5" },
{ false, iconv_OSF100201F4_e, "OSF100201F4" },
{ false, iconv_OSF100203B5_e, "OSF100203B5" },
{ false, iconv_OSF1002011C_e, "OSF1002011C" },
{ false, iconv_OSF1002011D_e, "OSF1002011D" },
{ false, iconv_OSF1002035D_e, "OSF1002035D" },
{ false, iconv_OSF1002035E_e, "OSF1002035E" },
{ false, iconv_OSF1002035F_e, "OSF1002035F" },
{ false, iconv_OSF1002036B_e, "OSF1002036B" },
{ false, iconv_OSF1002037B_e, "OSF1002037B" },
{ false, iconv_OSF10010001_e, "OSF10010001" },
{ false, iconv_OSF10010004_e, "OSF10010004" },
{ false, iconv_OSF10010006_e, "OSF10010006" },
{ false, iconv_OSF10020025_e, "OSF10020025" },
{ false, iconv_OSF10020111_e, "OSF10020111" },
{ false, iconv_OSF10020115_e, "OSF10020115" },
{ false, iconv_OSF10020116_e, "OSF10020116" },
{ false, iconv_OSF10020118_e, "OSF10020118" },
{ false, iconv_OSF10020122_e, "OSF10020122" },
{ false, iconv_OSF10020129_e, "OSF10020129" },
{ false, iconv_OSF10020352_e, "OSF10020352" },
{ false, iconv_OSF10020354_e, "OSF10020354" },
{ false, iconv_OSF10020357_e, "OSF10020357" },
{ false, iconv_OSF10020359_e, "OSF10020359" },
{ false, iconv_OSF10020360_e, "OSF10020360" },
{ false, iconv_OSF10020364_e, "OSF10020364" },
{ false, iconv_OSF10020365_e, "OSF10020365" },
{ false, iconv_OSF10020366_e, "OSF10020366" },
{ false, iconv_OSF10020367_e, "OSF10020367" },
{ false, iconv_OSF10020370_e, "OSF10020370" },
{ false, iconv_OSF10020387_e, "OSF10020387" },
{ false, iconv_OSF10020388_e, "OSF10020388" },
{ false, iconv_OSF10020396_e, "OSF10020396" },
{ false, iconv_OSF10020402_e, "OSF10020402" },
{ false, iconv_OSF10020417_e, "OSF10020417" },
{ false, iconv_PT_e, "PT" },
{ false, iconv_PT2_e, "PT2" },
{ false, iconv_PT154_e, "PT154" },
{ false, iconv_R8_e, "R8" },
{ false, iconv_R9_e, "R9" },
{ false, iconv_RK1048_e, "RK1048" },
{ false, iconv_ROMAN8_e, "ROMAN8" },
{ false, iconv_ROMAN9_e, "ROMAN9" },
{ false, iconv_RUSCII_e, "RUSCII" },
{ false, iconv_SE_e, "SE" },
{ false, iconv_SE2_e, "SE2" },
{ false, iconv_SEN_850200_B_e, "SEN_850200_B" },
{ false, iconv_SEN_850200_C_e, "SEN_850200_C" },
{ false, iconv_SHIFT_JIS_e, "SHIFT-JIS" },
{ false, iconv_SHIFTJISX0213_e, "SHIFTJISX0213" },
{ false, iconv_SHIFT_JIS_e, "SHIFT_JIS" },
{ false, iconv_SHIFT_JISX0213_e, "SHIFT_JISX0213" },
{ false, iconv_SJIS_OPEN_e, "SJIS-OPEN" },
{ false, iconv_SJIS_WIN_e, "SJIS-WIN" },
{ false, iconv_SJIS_e, "SJIS" },
{ false, iconv_SS636127_e, "SS636127" },
{ false, iconv_STRK1048_2002_e, "STRK1048-2002" },
{ false, iconv_ST_SEV_358_88_e, "ST_SEV_358-88" },
{ false, iconv_T_61_8BIT_e, "T.61-8BIT" },
{ false, iconv_T_61_e, "T.61" },
{ false, iconv_T_618BIT_e, "T.618BIT" },
{ false, iconv_TCVN_5712_e, "TCVN-5712" },
{ false, iconv_TCVN_e, "TCVN" },
{ false, iconv_TCVN5712_1_e, "TCVN5712-1" },
{ false, iconv_TCVN5712_1_1993_e, "TCVN5712-1:1993" },
{ false, iconv_THAI8_e, "THAI8" },
{ false, iconv_TIS_620_e, "TIS-620" },
{ false, iconv_TIS620_0_e, "TIS620-0" },
{ false, iconv_TIS620_2529_1_e, "TIS620.2529-1" },
{ false, iconv_TIS620_2533_0_e, "TIS620.2533-0" },
{ false, iconv_TIS620_e, "TIS620" },
{ false, iconv_TS_5881_e, "TS-5881" },
{ false, iconv_TSCII_e, "TSCII" },
{ false, iconv_TURKISH8_e, "TURKISH8" },
{ false, iconv_UCS_2_e, "UCS-2" },
{ false, iconv_UCS_2BE_e, "UCS-2BE" },
{ false, iconv_UCS_2LE_e, "UCS-2LE" },
{ false, iconv_UCS_4_e, "UCS-4" },
{ false, iconv_UCS_4BE_e, "UCS-4BE" },
{ false, iconv_UCS_4LE_e, "UCS-4LE" },
{ false, iconv_UCS2_e, "UCS2" },
{ false, iconv_UCS4_e, "UCS4" },
{ false, iconv_UHC_e, "UHC" },
{ false, iconv_UJIS_e, "UJIS" },
{ false, iconv_UK_e, "UK" },
{ false, iconv_UNICODE_e, "UNICODE" },
{ false, iconv_UNICODEBIG_e, "UNICODEBIG" },
{ false, iconv_UNICODELITTLE_e, "UNICODELITTLE" },
{ false, iconv_US_ASCII_e, "US-ASCII" },
{ false, iconv_US_e, "US" },
{ false, iconv_UTF_7_e, "UTF-7" },
// Is UTF-8 supported?? "supported" means "recognized by parser_alphabet",
// but UTF-8 is not a valid runtime encoding.
{ false, iconv_UTF_8_e, "UTF-8" },
{ false, iconv_UTF_16_e, "UTF-16" },
{ false, iconv_UTF_16BE_e, "UTF-16BE" },
{ false, iconv_UTF_16LE_e, "UTF-16LE" },
{ false, iconv_UTF_32_e, "UTF-32" },
{ false, iconv_UTF_32BE_e, "UTF-32BE" },
{ false, iconv_UTF_32LE_e, "UTF-32LE" },
{ false, iconv_UTF7_e, "UTF7" },
{ false, iconv_UTF8_e, "UTF8" },
{ false, iconv_UTF16_e, "UTF16" },
{ false, iconv_UTF16BE_e, "UTF16BE" },
{ false, iconv_UTF16LE_e, "UTF16LE" },
{ false, iconv_UTF32_e, "UTF32" },
{ false, iconv_UTF32BE_e, "UTF32BE" },
{ false, iconv_UTF32LE_e, "UTF32LE" },
{ false, iconv_VISCII_e, "VISCII" },
{ false, iconv_WCHAR_T_e, "WCHAR_T" },
{ false, iconv_WIN_SAMI_2_e, "WIN-SAMI-2" },
{ false, iconv_WINBALTRIM_e, "WINBALTRIM" },
{ false, iconv_WINDOWS_31J_e, "WINDOWS-31J" },
{ false, iconv_WINDOWS_874_e, "WINDOWS-874" },
{ false, iconv_WINDOWS_936_e, "WINDOWS-936" },
{ false, iconv_WINDOWS_1250_e, "WINDOWS-1250" },
{ false, iconv_WINDOWS_1251_e, "WINDOWS-1251" },
{ false, iconv_WINDOWS_1252_e, "WINDOWS-1252" },
{ false, iconv_WINDOWS_1253_e, "WINDOWS-1253" },
{ false, iconv_WINDOWS_1254_e, "WINDOWS-1254" },
{ false, iconv_WINDOWS_1255_e, "WINDOWS-1255" },
{ false, iconv_WINDOWS_1256_e, "WINDOWS-1256" },
{ false, iconv_WINDOWS_1257_e, "WINDOWS-1257" },
{ false, iconv_WINDOWS_1258_e, "WINDOWS-1258" },
{ false, iconv_WINSAMI2_e, "WINSAMI2" },
{ false, iconv_WS2_e, "WS2" },
{ false, iconv_YU_e, "YU" },
};
static const encodings_t *
encoding_descr( cbl_encoding_t encoding ) {
static encodings_t *eoencodings = encodings + COUNT_OF(encodings);
auto p = std::find_if( encodings, eoencodings,
[encoding]( const encodings_t& elem ) {
return encoding == elem.type;
} );
return p < eoencodings? p : nullptr;
}
const char *
__gg__encoding_iconv_name( cbl_encoding_t encoding ) {
auto p = encoding_descr(encoding);
return p? p->name : nullptr;
}
bool
__gg__encoding_iconv_valid( cbl_encoding_t encoding ) {
auto p = encoding_descr(encoding);
return p? p->supported : false;
}
cbl_encoding_t
__gg__encoding_iconv_type( const char *name ) {
static encodings_t *eoencodings = encodings + COUNT_OF(encodings);
char *slashless = strdup(name);
assert(slashless);
char *pslash = strchr(slashless, '/');
if( pslash )
{
*pslash = '\0';
}
auto p = std::find_if( encodings, eoencodings,
[slashless]( const encodings_t& elem ) {
return strcasecmp(slashless, elem.name) == 0;
} );
free(slashless);
return p < eoencodings? p->type : no_encoding_e;
}
char *
__gg__iconverter( cbl_encoding_t from,
cbl_encoding_t to,
const char *str,
size_t length,
size_t *outlength)
{
static size_t retsize = 1;
static char *retval = static_cast<char *>(malloc(retsize));
// Let's consider the possibility of each input character needed four output
// characters:
size_t needed = 4*length;
if( retsize < needed )
{
retsize = needed;
retval = static_cast<char *>(realloc(retval, retsize));
}
if( from == to )
{
memcpy(retval, str, length);
*outlength = length;
}
else
{
// Converts the given string from from to to using iconv.
// The return value points to a static memory area in this function, the
// caller has to respect that.
// We attempt to minimize overhead by using a map to call
// iconv_open but once for each from/to pairing.
iconv_t cd;
static std::unordered_map<uint32_t, iconv_t> pairings;
uint32_t pairing = static_cast<uint32_t>(from) << 16;
pairing += static_cast<uint32_t>(to);
std::unordered_map<uint32_t, iconv_t>::const_iterator it =
pairings.find(pairing);
if( it == pairings.end() )
{
// This pairing is new to us.
assert(to > custom_encoding_e);
assert(from > custom_encoding_e);
cd = iconv_open(__gg__encoding_iconv_name(to),
__gg__encoding_iconv_name(from));
pairings[pairing] = cd;
}
else
{
// We've seen this pairing before.
cd = it->second;
}
char *inbuf = const_cast<char *>(str);
char *outbuf = retval;
size_t incount = length;
size_t outcount = retsize;
*outlength = iconv( cd,
&inbuf, &incount,
&outbuf, &outcount);
*outlength = retsize - outcount;
if( *outlength == length )
{
/* In a kind of shortsighted way, we are going to assume
single-byte-coding, and we are going to cope here with the
COBOL-world reality of HIGH-VALUE being, by default, the value 0xFF.
This is required by IBM in the EBCDIC and ASCII worlds. The
implications for other locales are being left for another time.
So, for now, we are regarding 0xFF as invariant. Thus, at this
point, we have to scan the input and make sure the output has 0xFF
where the input does. */
for(size_t i=0; i<length; i++)
{
if( static_cast<unsigned char>(str[i]) == 0xFF )
{
retval[i] = static_cast<char>(0xFF);
}
}
}
}
// For the convenience of those who call this routine, we are sticking a
// terminating NUL on the end of the generated string
retval[*outlength] = '\0';
return retval;
}
static
std::unordered_map<cbl_encoding_t, charmap_t *>map_of_encodings;
charmap_t *
__gg__get_charmap(cbl_encoding_t encoding)
{
// In various places in the runtime, there will be need of charmap_t for
// various encodings. By using this routine, the overhead of creating and
// using them is kept low.
// Sometimes the encoding is custom_encoding_e, like when initializing a
// FldPointer. But we still need to have *something*, because of the need
// to handle certain figurative constants. An example is
// 01 FOO pointer value NULL
// where the encoding is irrelevant. So, in that case we force it to be
// something.
if( encoding == custom_encoding_e)
{
encoding = DEFAULT_SOURCE_ENCODING;
}
charmap_t *retval;
std::unordered_map<cbl_encoding_t, charmap_t *>::const_iterator it
= map_of_encodings.find(encoding);
if( it != map_of_encodings.end() )
{
retval = it->second;
}
else
{
retval = new charmap_t(encoding);
map_of_encodings[encoding] = retval;
}
return retval;
}