1/* Copyright (C) 1999-2010 Free Software Foundation, Inc.
2   This file is part of the GNU LIBICONV Library.
3
4   The GNU LIBICONV Library is free software; you can redistribute it
5   and/or modify it under the terms of the GNU Library General Public
6   License as published by the Free Software Foundation; either version 2
7   of the License, or (at your option) any later version.
8
9   The GNU LIBICONV Library is distributed in the hope that it will be
10   useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Library General Public License for more details.
13
14   You should have received a copy of the GNU Library General Public
15   License along with the GNU LIBICONV Library; see the file COPYING.LIB.
16   If not, write to the Free Software Foundation, Inc., 51 Franklin Street,
17   Fifth Floor, Boston, MA 02110-1301, USA.  */
18
19/* The list of all system independent user-visible encodings. */
20
21/* By convention, an encoding named FOOBAR or FOO_BAR or FOO-BAR is defined
22   in a file named "foobar.h" through the functions foobar_mbtowc and
23   foobar_wctomb (and possibly foobar_reset). */
24
25/* DEFENCODING(( name, alias1, ..., ),
26               xxx,
27               { xxx_mbtowc, xxx_flushwc },
28               { xxx_wctomb, xxx_reset })
29   defines an encoding with the given name and aliases. (There is no
30   difference between a name and an alias. By convention, the name is chosen
31   as the preferred MIME name or the standard name.)
32   All names and aliases must be in ASCII. Case is not significant, but
33   for the "cs*" aliases mixed case is preferred, otherwise UPPERCASE is
34   preferred. For all names and aliases, note where it comes from.
35   xxx is the name as used in the C code (lowercase).
36 */
37
38
39DEFENCODING(( "US-ASCII",               /* IANA */
40              "ASCII",                  /* IANA, JDK 1.1 */
41              "ISO646-US",              /* IANA */
42              "ISO_646.IRV:1991",       /* IANA */
43              "ISO-IR-6",               /* IANA */
44              "ANSI_X3.4-1968",         /* IANA */
45              "ANSI_X3.4-1986",         /* IANA */
46              "CP367",                  /* IANA */
47              "IBM367",                 /* IANA */
48              "US",                     /* IANA */
49              "csASCII",                /* IANA */
50            /*"ISO646.1991-IRV",           X11R6.4 */
51            ),
52            ascii,
53            { ascii_mbtowc, NULL },       { ascii_wctomb, NULL })
54#ifdef USE_SOLARIS_ALIASES
55DEFALIAS(     "646",                    /* Solaris */
56            ascii)
57#endif
58
59/* General multi-byte encodings */
60
61DEFENCODING(( "UTF-8",                  /* IANA, RFC 2279 */
62            /*"UTF8",                      JDK 1.1 */
63            /*"CP65001",                   Windows */
64            ),
65            utf8,
66            { utf8_mbtowc, NULL },        { utf8_wctomb, NULL })
67#ifdef USE_HPUX_ALIASES
68DEFALIAS(     "UTF8",                   /* HP-UX */
69            utf8)
70#endif
71
72DEFENCODING(( "UCS-2",                  /* glibc */
73              "ISO-10646-UCS-2",        /* IANA */
74              "csUnicode",              /* IANA */
75            ),
76            ucs2,
77            { ucs2_mbtowc, NULL },        { ucs2_wctomb, NULL })
78
79DEFENCODING(( "UCS-2BE",                /* glibc */
80              "UNICODEBIG",             /* glibc */
81              "UNICODE-1-1",            /* IANA */
82              "csUnicode11",            /* IANA */
83            /*"CP1201",                    Windows */
84            ),
85            ucs2be,
86            { ucs2be_mbtowc, NULL },      { ucs2be_wctomb, NULL })
87
88DEFENCODING(( "UCS-2LE",                /* glibc */
89              "UNICODELITTLE",          /* glibc */
90            /*"CP1200",                    Windows */
91            ),
92            ucs2le,
93            { ucs2le_mbtowc, NULL },      { ucs2le_wctomb, NULL })
94
95DEFENCODING(( "UCS-4",                  /* glibc */
96              "ISO-10646-UCS-4",        /* IANA */
97              "csUCS4",                 /* IANA */
98            ),
99            ucs4,
100            { ucs4_mbtowc, NULL },        { ucs4_wctomb, NULL })
101
102DEFENCODING(( "UCS-4BE",                /* glibc */
103            /*"CP12001",                   Windows */
104            ),
105            ucs4be,
106            { ucs4be_mbtowc, NULL },      { ucs4be_wctomb, NULL })
107
108DEFENCODING(( "UCS-4LE",                /* glibc */
109            /*"CP12000",                   Windows */
110            ),
111            ucs4le,
112            { ucs4le_mbtowc, NULL },      { ucs4le_wctomb, NULL })
113
114DEFENCODING(( "UTF-16",                 /* IANA, RFC 2781 */
115            ),
116            utf16,
117            { utf16_mbtowc, NULL },       { utf16_wctomb, NULL })
118
119DEFENCODING(( "UTF-16BE",               /* IANA, RFC 2781 */
120            ),
121            utf16be,
122            { utf16be_mbtowc, NULL },     { utf16be_wctomb, NULL })
123
124DEFENCODING(( "UTF-16LE",               /* IANA, RFC 2781 */
125            ),
126            utf16le,
127            { utf16le_mbtowc, NULL },     { utf16le_wctomb, NULL })
128
129DEFENCODING(( "UTF-32",                 /* IANA, Unicode 3.1 */
130            ),
131            utf32,
132            { utf32_mbtowc, NULL },       { utf32_wctomb, NULL })
133
134DEFENCODING(( "UTF-32BE",               /* IANA, Unicode 3.1 */
135            ),
136            utf32be,
137            { utf32be_mbtowc, NULL },     { utf32be_wctomb, NULL })
138
139DEFENCODING(( "UTF-32LE",               /* IANA, Unicode 3.1 */
140            ),
141            utf32le,
142            { utf32le_mbtowc, NULL },     { utf32le_wctomb, NULL })
143
144DEFENCODING(( "UTF-7",                  /* IANA, RFC 2152 */
145              "UNICODE-1-1-UTF-7",      /* IANA, RFC 1642 */
146              "csUnicode11UTF7",        /* IANA */
147            /*"CP65000",                   Windows */
148            ),
149            utf7,
150            { utf7_mbtowc, NULL },        { utf7_wctomb, utf7_reset })
151
152DEFENCODING(( "UCS-2-INTERNAL",         /* libiconv */
153            ),
154            ucs2internal,
155            { ucs2internal_mbtowc, NULL }, { ucs2internal_wctomb, NULL })
156
157DEFENCODING(( "UCS-2-SWAPPED",          /* libiconv */
158            ),
159            ucs2swapped,
160            { ucs2swapped_mbtowc, NULL }, { ucs2swapped_wctomb, NULL })
161
162DEFENCODING(( "UCS-4-INTERNAL",         /* libiconv */
163            ),
164            ucs4internal,
165            { ucs4internal_mbtowc, NULL },{ ucs4internal_wctomb, NULL })
166
167DEFENCODING(( "UCS-4-SWAPPED",          /* libiconv */
168            ),
169            ucs4swapped,
170            { ucs4swapped_mbtowc, NULL }, { ucs4swapped_wctomb, NULL })
171
172DEFENCODING(( "C99",
173            ),
174            c99,
175            { c99_mbtowc, NULL },         { c99_wctomb, NULL })
176
177DEFENCODING(( "JAVA",
178            ),
179            java,
180            { java_mbtowc, NULL },        { java_wctomb, NULL })
181
182/* Standard 8-bit encodings */
183
184DEFENCODING(( "ISO-8859-1",             /* IANA */
185              "ISO_8859-1",             /* IANA */
186              "ISO_8859-1:1987",        /* IANA */
187              "ISO-IR-100",             /* IANA */
188              "CP819",                  /* IANA */
189              "IBM819",                 /* IANA */
190              "LATIN1",                 /* IANA */
191              "L1",                     /* IANA */
192              "csISOLatin1",            /* IANA */
193              "ISO8859-1",              /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */
194            /*"ISO8859_1",                 JDK 1.1 */
195            /*"CP28591",                   Windows */
196            ),
197            iso8859_1,
198            { iso8859_1_mbtowc, NULL },   { iso8859_1_wctomb, NULL })
199#ifdef USE_HPUX_ALIASES
200DEFALIAS(     "ISO88591",               /* HP-UX */
201            iso8859_1)
202#endif
203
204DEFENCODING(( "ISO-8859-2",             /* IANA */
205              "ISO_8859-2",             /* IANA */
206              "ISO_8859-2:1987",        /* IANA */
207              "ISO-IR-101",             /* IANA */
208              "LATIN2",                 /* IANA */
209              "L2",                     /* IANA */
210              "csISOLatin2",            /* IANA */
211              "ISO8859-2",              /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */
212            /*"ISO8859_2",                 JDK 1.1 */
213            /*"CP28592",                   Windows */
214            ),
215            iso8859_2,
216            { iso8859_2_mbtowc, NULL },   { iso8859_2_wctomb, NULL })
217#ifdef USE_HPUX_ALIASES
218DEFALIAS(     "ISO88592",               /* HP-UX */
219            iso8859_2)
220#endif
221
222DEFENCODING(( "ISO-8859-3",             /* IANA */
223              "ISO_8859-3",             /* IANA */
224              "ISO_8859-3:1988",        /* IANA */
225              "ISO-IR-109",             /* IANA */
226              "LATIN3",                 /* IANA */
227              "L3",                     /* IANA */
228              "csISOLatin3",            /* IANA */
229              "ISO8859-3",              /* X11R6.4, glibc, FreeBSD, Solaris */
230            /*"ISO8859_3",                 JDK 1.1 */
231            /*"CP28593",                   Windows */
232            ),
233            iso8859_3,
234            { iso8859_3_mbtowc, NULL },   { iso8859_3_wctomb, NULL })
235
236DEFENCODING(( "ISO-8859-4",             /* IANA */
237              "ISO_8859-4",             /* IANA */
238              "ISO_8859-4:1988",        /* IANA */
239              "ISO-IR-110",             /* IANA */
240              "LATIN4",                 /* IANA */
241              "L4",                     /* IANA */
242              "csISOLatin4",            /* IANA */
243              "ISO8859-4",              /* X11R6.4, glibc, FreeBSD, OSF/1, Solaris */
244            /*"ISO8859_4",                 JDK 1.1 */
245            /*"CP28594",                   Windows */
246            ),
247            iso8859_4,
248            { iso8859_4_mbtowc, NULL },   { iso8859_4_wctomb, NULL })
249
250DEFENCODING(( "ISO-8859-5",             /* IANA */
251              "ISO_8859-5",             /* IANA */
252              "ISO_8859-5:1988",        /* IANA */
253              "ISO-IR-144",             /* IANA */
254              "CYRILLIC",               /* IANA */
255              "csISOLatinCyrillic",     /* IANA */
256              "ISO8859-5",              /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */
257            /*"ISO8859_5",                 JDK 1.1 */
258            /*"CP28595",                   Windows */
259            ),
260            iso8859_5,
261            { iso8859_5_mbtowc, NULL },   { iso8859_5_wctomb, NULL })
262#ifdef USE_HPUX_ALIASES
263DEFALIAS(     "ISO88595",               /* HP-UX */
264            iso8859_5)
265#endif
266
267DEFENCODING(( "ISO-8859-6",             /* IANA */
268              "ISO_8859-6",             /* IANA */
269              "ISO_8859-6:1987",        /* IANA */
270              "ISO-IR-127",             /* IANA */
271              "ECMA-114",               /* IANA */
272              "ASMO-708",               /* IANA */
273              "ARABIC",                 /* IANA */
274              "csISOLatinArabic",       /* IANA */
275              "ISO8859-6",              /* X11R6.4, glibc, FreeBSD, AIX, Solaris */
276            /*"ISO8859_6",                 JDK 1.1 */
277            /*"CP28596",                   Windows */
278            ),
279            iso8859_6,
280            { iso8859_6_mbtowc, NULL },   { iso8859_6_wctomb, NULL })
281#ifdef USE_HPUX_ALIASES
282DEFALIAS(     "ISO88596",               /* HP-UX */
283            iso8859_6)
284#endif
285
286DEFENCODING(( "ISO-8859-7",             /* IANA, RFC 1947 */
287              "ISO_8859-7",             /* IANA */
288              "ISO_8859-7:1987",        /* IANA */
289              "ISO_8859-7:2003",
290              "ISO-IR-126",             /* IANA */
291              "ECMA-118",               /* IANA */
292              "ELOT_928",               /* IANA */
293              "GREEK8",                 /* IANA */
294              "GREEK",                  /* IANA */
295              "csISOLatinGreek",        /* IANA */
296              "ISO8859-7",              /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */
297            /*"ISO8859_7",                 JDK 1.1 */
298            /*"CP28597",                   Windows */
299            ),
300            iso8859_7,
301            { iso8859_7_mbtowc, NULL },   { iso8859_7_wctomb, NULL })
302#ifdef USE_HPUX_ALIASES
303DEFALIAS(     "ISO88597",               /* HP-UX */
304            iso8859_7)
305#endif
306
307DEFENCODING(( "ISO-8859-8",             /* IANA */
308              "ISO_8859-8",             /* IANA */
309              "ISO_8859-8:1988",        /* IANA */
310              "ISO-IR-138",             /* IANA */
311              "HEBREW",                 /* IANA */
312              "csISOLatinHebrew",       /* IANA */
313              "ISO8859-8",              /* X11R6.4, glibc, FreeBSD, AIX, OSF/1, Solaris */
314            /*"ISO8859_8",                 JDK 1.1 */
315            /*"CP28598",                   Windows */
316            /*"CP38598",                   Windows */
317            ),
318            iso8859_8,
319            { iso8859_8_mbtowc, NULL },   { iso8859_8_wctomb, NULL })
320#ifdef USE_HPUX_ALIASES
321DEFALIAS(     "ISO88598",               /* HP-UX */
322            iso8859_8)
323#endif
324
325DEFENCODING(( "ISO-8859-9",             /* IANA */
326              "ISO_8859-9",             /* IANA */
327              "ISO_8859-9:1989",        /* IANA */
328              "ISO-IR-148",             /* IANA */
329              "LATIN5",                 /* IANA */
330              "L5",                     /* IANA */
331              "csISOLatin5",            /* IANA */
332              "ISO8859-9",              /* X11R6.4, glibc, FreeBSD, AIX, IRIX, OSF/1, Solaris */
333            /*"ISO8859_9",                 JDK 1.1 */
334            /*"CP28599",                   Windows */
335            ),
336            iso8859_9,
337            { iso8859_9_mbtowc, NULL },   { iso8859_9_wctomb, NULL })
338#ifdef USE_HPUX_ALIASES
339DEFALIAS(     "ISO88599",               /* HP-UX */
340            iso8859_9)
341#endif
342
343DEFENCODING(( "ISO-8859-10",            /* IANA */
344              "ISO_8859-10",
345              "ISO_8859-10:1992",       /* IANA */
346              "ISO-IR-157",             /* IANA */
347              "LATIN6",                 /* IANA */
348              "L6",                     /* IANA */
349              "csISOLatin6",            /* IANA */
350              "ISO8859-10",             /* X11R6.4, glibc, FreeBSD */
351            ),
352            iso8859_10,
353            { iso8859_10_mbtowc, NULL },  { iso8859_10_wctomb, NULL })
354
355DEFENCODING(( "ISO-8859-11",            /* glibc */
356              "ISO_8859-11",
357              "ISO8859-11",             /* X11R6.7, glibc */
358            ),
359            iso8859_11,
360            { iso8859_11_mbtowc, NULL },  { iso8859_11_wctomb, NULL })
361
362DEFENCODING(( "ISO-8859-13",            /* IANA, glibc */
363              "ISO_8859-13",
364              "ISO-IR-179",             /* glibc */
365              "LATIN7",                 /* glibc */
366              "L7",                     /* glibc */
367              "ISO8859-13",             /* glibc, FreeBSD */
368            ),
369            iso8859_13,
370            { iso8859_13_mbtowc, NULL },  { iso8859_13_wctomb, NULL })
371#ifdef USE_AIX_ALIASES
372DEFALIAS(     "IBM-921",                /* AIX */
373            iso8859_13)
374#endif
375
376DEFENCODING(( "ISO-8859-14",            /* IANA, glibc */
377              "ISO_8859-14",            /* IANA */
378              "ISO_8859-14:1998",       /* IANA, glibc */
379              "ISO-IR-199",             /* IANA */
380              "LATIN8",                 /* IANA, glibc */
381              "L8",                     /* IANA, glibc */
382              "ISO-CELTIC",             /* IANA */
383              "ISO8859-14",             /* glibc, FreeBSD */
384            ),
385            iso8859_14,
386            { iso8859_14_mbtowc, NULL },  { iso8859_14_wctomb, NULL })
387
388DEFENCODING(( "ISO-8859-15",            /* IANA, glibc */
389              "ISO_8859-15",            /* IANA */
390              "ISO_8859-15:1998",       /* glibc */
391              "ISO-IR-203",
392              "LATIN-9",                /* IANA */
393              "ISO8859-15",             /* glibc, FreeBSD, AIX, OSF/1, Solaris */
394            /*"CP28605",                   Windows */
395            ),
396            iso8859_15,
397            { iso8859_15_mbtowc, NULL },  { iso8859_15_wctomb, NULL })
398#ifdef USE_HPUX_ALIASES
399DEFALIAS(     "ISO885915",              /* HP-UX */
400            iso8859_15)
401#endif
402
403DEFENCODING(( "ISO-8859-16",            /* IANA */
404              "ISO_8859-16",            /* IANA */
405              "ISO_8859-16:2001",       /* IANA */
406              "ISO-IR-226",             /* IANA */
407              "LATIN10",                /* IANA */
408              "L10",                    /* IANA */
409              "ISO8859-16",             /* glibc, FreeBSD */
410            ),
411            iso8859_16,
412            { iso8859_16_mbtowc, NULL },  { iso8859_16_wctomb, NULL })
413
414DEFENCODING(( "KOI8-R",                 /* IANA, RFC 1489, X11R6.4, JDK 1.1 */
415              "csKOI8R",                /* IANA */
416            /*"CP20866",                   Windows */
417            ),
418            koi8_r,
419            { koi8_r_mbtowc, NULL },      { koi8_r_wctomb, NULL })
420
421DEFENCODING(( "KOI8-U",                 /* IANA, RFC 2319 */
422            ),
423            koi8_u,
424            { koi8_u_mbtowc, NULL },      { koi8_u_wctomb, NULL })
425
426DEFENCODING(( "KOI8-RU",
427            ),
428            koi8_ru,
429            { koi8_ru_mbtowc, NULL },     { koi8_ru_wctomb, NULL })
430
431/* Windows 8-bit encodings */
432
433DEFENCODING(( "CP1250",                 /* JDK 1.1 */
434              "WINDOWS-1250",           /* IANA */
435              "MS-EE",
436            ),
437            cp1250,
438            { cp1250_mbtowc, NULL },      { cp1250_wctomb, NULL })
439
440DEFENCODING(( "CP1251",                 /* JDK 1.1 */
441              "WINDOWS-1251",           /* IANA */
442              "MS-CYRL",
443            ),
444            cp1251,
445            { cp1251_mbtowc, NULL },      { cp1251_wctomb, NULL })
446#ifdef USE_SOLARIS_ALIASES
447DEFALIAS(     "ANSI-1251",              /* Solaris */
448            cp1251)
449#endif
450
451DEFENCODING(( "CP1252",                 /* JDK 1.1 */
452              "WINDOWS-1252",           /* IANA */
453              "MS-ANSI",
454            ),
455            cp1252,
456            { cp1252_mbtowc, NULL },      { cp1252_wctomb, NULL })
457#ifdef USE_AIX_ALIASES
458DEFALIAS(     "IBM-1252",               /* AIX */
459            cp1252)
460#endif
461
462DEFENCODING(( "CP1253",                 /* JDK 1.1 */
463              "WINDOWS-1253",           /* IANA */
464              "MS-GREEK",
465            ),
466            cp1253,
467            { cp1253_mbtowc, NULL },      { cp1253_wctomb, NULL })
468
469DEFENCODING(( "CP1254",                 /* JDK 1.1 */
470              "WINDOWS-1254",           /* IANA */
471              "MS-TURK",
472            ),
473            cp1254,
474            { cp1254_mbtowc, NULL },      { cp1254_wctomb, NULL })
475
476DEFENCODING(( "CP1255",                 /* JDK 1.1 */
477              "WINDOWS-1255",           /* IANA */
478              "MS-HEBR",
479            ),
480            cp1255,
481            { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, NULL })
482
483DEFENCODING(( "CP1256",                 /* JDK 1.1 */
484              "WINDOWS-1256",           /* IANA */
485              "MS-ARAB",
486            ),
487            cp1256,
488            { cp1256_mbtowc, NULL },      { cp1256_wctomb, NULL })
489
490DEFENCODING(( "CP1257",                 /* JDK 1.1 */
491              "WINDOWS-1257",           /* IANA */
492              "WINBALTRIM",
493            ),
494            cp1257,
495            { cp1257_mbtowc, NULL },      { cp1257_wctomb, NULL })
496
497DEFENCODING(( "CP1258",                 /* JDK 1.1 */
498              "WINDOWS-1258",           /* IANA */
499            ),
500            cp1258,
501            { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, NULL })
502
503/* DOS 8-bit encodings */
504
505DEFENCODING(( "CP850",                  /* IANA, JDK 1.1 */
506              "IBM850",                 /* IANA */
507              "850",                    /* IANA */
508              "csPC850Multilingual",    /* IANA */
509            ),
510            cp850,
511            { cp850_mbtowc, NULL },       { cp850_wctomb, NULL })
512#ifdef USE_AIX_ALIASES
513DEFALIAS(     "IBM-850",                /* AIX */
514            cp850)
515#endif
516
517DEFENCODING(( "CP862",                  /* IANA, JDK 1.1 */
518              "IBM862",                 /* IANA */
519              "862",                    /* IANA */
520              "csPC862LatinHebrew",     /* IANA */
521            ),
522            cp862,
523            { cp862_mbtowc, NULL },       { cp862_wctomb, NULL })
524
525DEFENCODING(( "CP866",                  /* IANA, JDK 1.1 */
526              "IBM866",                 /* IANA */
527              "866",                    /* IANA */
528              "csIBM866",               /* IANA */
529            ),
530            cp866,
531            { cp866_mbtowc, NULL },       { cp866_wctomb, NULL })
532
533DEFENCODING(( "CP1131",                 /* FreeBSD, MacOS X */
534            ),
535            cp1131,
536            { cp1131_mbtowc, NULL },      { cp1131_wctomb, NULL })
537#ifdef USE_AIX_ALIASES
538DEFALIAS(     "IBM-1131",               /* AIX */
539            cp1131)
540#endif
541
542/* Macintosh 8-bit encodings */
543
544DEFENCODING(( "MacRoman",               /* JDK 1.1 */
545              /* This is the best table for MACINTOSH. The ones */
546              /* in glibc and FreeBSD-iconv are bad quality. */
547              "MACINTOSH",              /* IANA */
548              "MAC",                    /* IANA */
549              "csMacintosh",            /* IANA */
550            /*"CP10000",                   Windows */
551            ),
552            mac_roman,
553            { mac_roman_mbtowc, NULL },   { mac_roman_wctomb, NULL })
554
555DEFENCODING(( "MacCentralEurope",       /* JDK 1.1 */
556            /*"CP10029",                   Windows */
557            ),
558            mac_centraleurope,
559            { mac_centraleurope_mbtowc, NULL }, { mac_centraleurope_wctomb, NULL })
560
561DEFENCODING(( "MacIceland",             /* JDK 1.1 */
562            /*"CP10079",                   Windows */
563            ),
564            mac_iceland,
565            { mac_iceland_mbtowc, NULL }, { mac_iceland_wctomb, NULL })
566
567DEFENCODING(( "MacCroatian",            /* JDK 1.1 */
568            /*"CP10082",                   Windows */
569            ),
570            mac_croatian,
571            { mac_croatian_mbtowc, NULL }, { mac_croatian_wctomb, NULL })
572
573DEFENCODING(( "MacRomania",             /* JDK 1.1 */
574            /*"CP10010",                   Windows */
575            ),
576            mac_romania,
577            { mac_romania_mbtowc, NULL }, { mac_romania_wctomb, NULL })
578
579DEFENCODING(( "MacCyrillic",            /* JDK 1.1 */
580            /*"CP10007",                   Windows */
581            ),
582            mac_cyrillic,
583            { mac_cyrillic_mbtowc, NULL }, { mac_cyrillic_wctomb, NULL })
584
585DEFENCODING(( "MacUkraine",             /* JDK 1.1 */
586            /*"CP10017",                   Windows */
587            ),
588            mac_ukraine,
589            { mac_ukraine_mbtowc, NULL }, { mac_ukraine_wctomb, NULL })
590
591DEFENCODING(( "MacGreek",               /* JDK 1.1 */
592            /*"CP10006",                   Windows */
593            ),
594            mac_greek,
595            { mac_greek_mbtowc, NULL },   { mac_greek_wctomb, NULL })
596
597DEFENCODING(( "MacTurkish",             /* JDK 1.1 */
598            /*"CP10081",                   Windows */
599            ),
600            mac_turkish,
601            { mac_turkish_mbtowc, NULL }, { mac_turkish_wctomb, NULL })
602
603DEFENCODING(( "MacHebrew",              /* JDK 1.1 */
604            /*"CP10005",                   Windows */
605            ),
606            mac_hebrew,
607            { mac_hebrew_mbtowc, NULL },  { mac_hebrew_wctomb, NULL })
608
609DEFENCODING(( "MacArabic",              /* JDK 1.1 */
610            /*"CP10004",                   Windows */
611            ),
612            mac_arabic,
613            { mac_arabic_mbtowc, NULL },  { mac_arabic_wctomb, NULL })
614
615DEFENCODING(( "MacThai",                /* JDK 1.1 */
616            /*"CP10021",                   Windows */
617            ),
618            mac_thai,
619            { mac_thai_mbtowc, NULL },    { mac_thai_wctomb, NULL })
620
621/* Other platform specific 8-bit encodings */
622
623DEFENCODING(( "HP-ROMAN8",              /* IANA, X11R6.4 */
624              "ROMAN8",                 /* IANA */
625              "R8",                     /* IANA */
626              "csHPRoman8",             /* IANA */
627            ),
628            hp_roman8,
629            { hp_roman8_mbtowc, NULL },   { hp_roman8_wctomb, NULL })
630
631DEFENCODING(( "NEXTSTEP",
632            ),
633            nextstep,
634            { nextstep_mbtowc, NULL },    { nextstep_wctomb, NULL })
635
636/* Regional 8-bit encodings used for a single language */
637
638DEFENCODING(( "ARMSCII-8",
639            ),
640            armscii_8,
641            { armscii_8_mbtowc, NULL },   { armscii_8_wctomb, NULL })
642
643DEFENCODING(( "GEORGIAN-ACADEMY",
644            ),
645            georgian_academy,
646            { georgian_academy_mbtowc, NULL }, { georgian_academy_wctomb, NULL })
647
648DEFENCODING(( "GEORGIAN-PS",
649            ),
650            georgian_ps,
651            { georgian_ps_mbtowc, NULL }, { georgian_ps_wctomb, NULL })
652
653DEFENCODING(( "KOI8-T",
654            ),
655            koi8_t,
656            { koi8_t_mbtowc, NULL },      { koi8_t_wctomb, NULL })
657
658DEFENCODING(( "PT154",                  /* IANA, glibc */
659              "PTCP154",                /* IANA */
660              "CP154",                  /* IANA */
661              "CYRILLIC-ASIAN",         /* IANA */
662              "csPTCP154",              /* IANA */
663            ),
664            pt154,
665            { pt154_mbtowc, NULL },       { pt154_wctomb, NULL })
666
667DEFENCODING(( "RK1048",                 /* IANA, glibc */
668              "STRK1048-2002",          /* IANA */
669              "KZ-1048",                /* IANA */
670              "csKZ1048",               /* IANA */
671            ),
672            rk1048,
673            { rk1048_mbtowc, NULL },      { rk1048_wctomb, NULL })
674
675DEFENCODING(( "MULELAO-1",
676            ),
677            mulelao,
678            { mulelao_mbtowc, NULL },     { mulelao_wctomb, NULL })
679
680DEFENCODING(( "CP1133",
681              "IBM-CP1133",
682            ),
683            cp1133,
684            { cp1133_mbtowc, NULL },      { cp1133_wctomb, NULL })
685
686DEFENCODING(( "TIS-620",                /* IANA */
687              "TIS620",                 /* glibc, HP-UX */
688              "TIS620-0",               /* glibc */
689              "TIS620.2529-1",          /* glibc */
690              "TIS620.2533-0",          /* glibc */
691              "TIS620.2533-1",
692              "ISO-IR-166",             /* glibc */
693            ),
694            tis620,
695            { tis620_mbtowc, NULL },      { tis620_wctomb, NULL })
696#ifdef USE_OSF1_ALIASES
697DEFALIAS(     "TACTIS",                 /* OSF/1 */
698            tis620)
699#endif
700#ifdef USE_SOLARIS_ALIASES
701DEFALIAS(     "TIS620.2533",            /* Solaris */
702            tis620)
703#endif
704
705DEFENCODING(( "CP874",                  /* JDK 1.1 */
706              "WINDOWS-874",
707            ),
708            cp874,
709            { cp874_mbtowc, NULL },       { cp874_wctomb, NULL })
710
711DEFENCODING(( "VISCII",                 /* IANA, RFC 1456 */
712              "VISCII1.1-1",
713              "csVISCII",               /* IANA */
714            ),
715            viscii,
716            { viscii_mbtowc, NULL },      { viscii_wctomb, NULL })
717
718DEFENCODING(( "TCVN",
719              "TCVN-5712",
720              "TCVN5712-1",
721              "TCVN5712-1:1993",
722            ),
723            tcvn,
724            { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, NULL })
725
726/* CJK character sets (not documented) */
727
728DEFENCODING(( "JIS_C6220-1969-RO",      /* IANA */
729              "ISO646-JP",              /* IANA */
730              "ISO-IR-14",              /* IANA */
731              "JP",                     /* IANA */
732              "csISO14JISC6220ro",      /* IANA */
733            ),
734            iso646_jp,
735            { iso646_jp_mbtowc, NULL },   { iso646_jp_wctomb, NULL })
736
737DEFENCODING(( "JIS_X0201",              /* IANA */
738              "JISX0201-1976",
739              "X0201",                  /* IANA */
740              "csHalfWidthKatakana",    /* IANA */
741            /*"JISX0201.1976-0",           X11R6.4 */
742            /*"JIS0201",                   JDK 1.1 */
743            ),
744            jisx0201,
745            { jisx0201_mbtowc, NULL },    { jisx0201_wctomb, NULL })
746
747DEFENCODING(( "JIS_X0208",
748              "JIS_X0208-1983",         /* IANA */
749              "JIS_X0208-1990",
750              "JIS0208",
751              "X0208",                  /* IANA */
752              "ISO-IR-87",              /* IANA */
753              "JIS_C6226-1983",         /* IANA */
754              "csISO87JISX0208",        /* IANA */
755            /*"JISX0208.1983-0",           X11R6.4 */
756            /*"JISX0208.1990-0",           X11R6.4 */
757            /*"JIS0208",                   JDK 1.1 */
758            ),
759            jisx0208,
760            { jisx0208_mbtowc, NULL },    { jisx0208_wctomb, NULL })
761
762DEFENCODING(( "JIS_X0212",
763              "JIS_X0212.1990-0",
764              "JIS_X0212-1990",         /* IANA */
765              "X0212",                  /* IANA */
766              "ISO-IR-159",             /* IANA */
767              "csISO159JISX02121990",   /* IANA */
768            /*"JISX0212.1990-0",           X11R6.4 */
769            /*"JIS0212",                   JDK 1.1 */
770            ),
771            jisx0212,
772            { jisx0212_mbtowc, NULL },    { jisx0212_wctomb, NULL })
773
774DEFENCODING(( "GB_1988-80",             /* IANA */
775              "ISO646-CN",              /* IANA */
776              "ISO-IR-57",              /* IANA */
777              "CN",                     /* IANA */
778              "csISO57GB1988",          /* IANA */
779            ),
780            iso646_cn,
781            { iso646_cn_mbtowc, NULL },   { iso646_cn_wctomb, NULL })
782
783DEFENCODING(( "GB_2312-80",             /* IANA */
784              "ISO-IR-58",              /* IANA */
785              "csISO58GB231280",        /* IANA */
786              "CHINESE",                /* IANA */
787            /*"GB2312.1980-0",             X11R6.4 */
788            ),
789            gb2312,
790            { gb2312_mbtowc, NULL },      { gb2312_wctomb, NULL })
791
792DEFENCODING(( "ISO-IR-165",
793              "CN-GB-ISOIR165",         /* RFC 1922 */
794            ),
795            isoir165,
796            { isoir165_mbtowc, NULL },    { isoir165_wctomb, NULL })
797
798DEFENCODING(( "KSC_5601",               /* IANA */
799              "KS_C_5601-1987",         /* IANA */
800              "KS_C_5601-1989",         /* IANA */
801              "ISO-IR-149",             /* IANA */
802              "csKSC56011987",          /* IANA */
803              "KOREAN",                 /* IANA */
804            /*"KSC5601.1987-0",            X11R6.4 */
805            /*"KSX1001:1992",              Ken Lunde */
806            ),
807            ksc5601,
808            { ksc5601_mbtowc, NULL },     { ksc5601_wctomb, NULL })
809
810/* CJK encodings */
811
812DEFENCODING(( "EUC-JP",                 /* IANA */
813              "EUCJP",                  /* glibc, HP-UX, IRIX, OSF/1, Solaris */
814              "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */
815              "csEUCPkdFmtJapanese",    /* IANA */
816            /*"EUC_JP",                    JDK 1.1 */
817            /*"CP51932",                   Windows */
818            ),
819            euc_jp,
820            { euc_jp_mbtowc, NULL },      { euc_jp_wctomb, NULL })
821#ifdef USE_AIX_ALIASES
822DEFALIAS(     "IBM-EUCJP",              /* AIX */
823            euc_jp)
824#endif
825#ifdef USE_OSF1_ALIASES
826DEFALIAS(     "SDECKANJI",              /* OSF/1 */
827            euc_jp)
828#endif
829
830DEFENCODING(( "SHIFT_JIS",              /* IANA */
831              "SHIFT-JIS",              /* glibc */
832              "SJIS",                   /* JDK 1.1, HP-UX, OSF/1 */
833              "MS_KANJI",               /* IANA */
834              "csShiftJIS",             /* IANA */
835            ),
836            sjis,
837            { sjis_mbtowc, NULL },        { sjis_wctomb, NULL })
838#ifdef USE_SOLARIS_ALIASES
839DEFALIAS(     "PCK",                    /* Solaris */
840            sjis)
841#endif
842
843DEFENCODING(( "CP932",                  /* glibc */
844            ),
845            cp932,
846            { cp932_mbtowc, NULL },       { cp932_wctomb, NULL })
847#ifdef USE_AIX_ALIASES
848DEFALIAS(     "IBM-932",                /* AIX */
849            cp932)
850#endif
851
852DEFENCODING(( "ISO-2022-JP",            /* IANA, RFC 1468 */
853              "csISO2022JP",            /* IANA */
854            /*"ISO2022JP",                 JDK 1.1 */
855            ),
856            iso2022_jp,
857            { iso2022_jp_mbtowc, NULL },  { iso2022_jp_wctomb, iso2022_jp_reset })
858
859DEFENCODING(( "ISO-2022-JP-1",          /* RFC 2237 */
860            ),
861            iso2022_jp1,
862            { iso2022_jp1_mbtowc, NULL }, { iso2022_jp1_wctomb, iso2022_jp1_reset })
863
864DEFENCODING(( "ISO-2022-JP-2",          /* IANA, RFC 1554 */
865              "csISO2022JP2",           /* IANA */
866            ),
867            iso2022_jp2,
868            { iso2022_jp2_mbtowc, NULL }, { iso2022_jp2_wctomb, iso2022_jp2_reset })
869
870DEFENCODING(( "EUC-CN",                 /* glibc */
871              "EUCCN",                  /* glibc, IRIX */
872              "GB2312",                 /* IANA */
873              "CN-GB",                  /* RFC 1922 */
874              "csGB2312",               /* IANA */
875            /*"EUC_CN",                    JDK 1.1 */
876            /*"CP51936",                   Windows */
877            ),
878            euc_cn,
879            { euc_cn_mbtowc, NULL },      { euc_cn_wctomb, NULL })
880#ifdef USE_AIX_ALIASES
881DEFALIAS(     "IBM-EUCCN",              /* AIX */
882            euc_cn)
883#endif
884#ifdef USE_HPUX_ALIASES
885DEFALIAS(     "HP15CN",                 /* HP-UX */
886            euc_cn)
887#endif
888#ifdef USE_OSF1_ALIASES
889DEFALIAS(     "DECHANZI",               /* OSF/1 */
890            euc_cn)
891#endif
892
893DEFENCODING(( "GBK",                    /* IANA, JDK 1.1 */
894            ),
895            ces_gbk,
896            { ces_gbk_mbtowc, NULL },     { ces_gbk_wctomb, NULL })
897
898DEFENCODING(( "CP936",                  /* IANA */
899              "MS936",                  /* IANA */
900              "WINDOWS-936",            /* IANA */
901            ),
902            cp936,
903            { cp936_mbtowc, NULL },       { cp936_wctomb, NULL })
904
905DEFENCODING(( "GB18030",                /* IANA, glibc */
906            /*"CP54936",                   Windows */
907            ),
908            gb18030,
909            { gb18030_mbtowc, NULL },     { gb18030_wctomb, NULL })
910
911DEFENCODING(( "ISO-2022-CN",            /* IANA, RFC 1922 */
912              "csISO2022CN",
913            /*"ISO2022CN",                 JDK 1.1 */
914            ),
915            iso2022_cn,
916            { iso2022_cn_mbtowc, NULL },  { iso2022_cn_wctomb, iso2022_cn_reset })
917
918DEFENCODING(( "ISO-2022-CN-EXT",        /* IANA, RFC 1922 */
919            ),
920            iso2022_cn_ext,
921            { iso2022_cn_ext_mbtowc, NULL }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset })
922
923DEFENCODING(( "HZ",                     /* RFC 1843 */
924              "HZ-GB-2312",             /* IANA, RFC 1842 */
925            ),
926            hz,
927            { hz_mbtowc, NULL },          { hz_wctomb, hz_reset })
928
929DEFENCODING(( "EUC-TW",                 /* glibc */
930              "EUCTW",                  /* glibc, HP-UX, IRIX, OSF/1 */
931              "csEUCTW",
932            /*"EUC_TW",                    JDK 1.1 */
933            /*"CP51950",                   Windows */
934            ),
935            euc_tw,
936            { euc_tw_mbtowc, NULL },      { euc_tw_wctomb, NULL })
937#ifdef USE_AIX_ALIASES
938DEFALIAS(     "IBM-EUCTW",              /* AIX */
939            euc_tw)
940#endif
941#ifdef USE_SOLARIS_ALIASES
942DEFALIAS(     "CNS11643",               /* Solaris */
943            euc_tw)
944#endif
945
946DEFENCODING(( "BIG5",                   /* IANA, JDK 1.1 */
947              "BIG-5",                  /* glibc */
948              "BIG-FIVE",               /* glibc */
949              "BIGFIVE",                /* glibc */
950              "CN-BIG5",                /* RFC 1922 */
951              "csBig5",                 /* IANA */
952            ),
953            ces_big5,
954            { ces_big5_mbtowc, NULL },    { ces_big5_wctomb, NULL })
955
956DEFENCODING(( "CP950",                  /* JDK 1.1 */
957            ),
958            cp950,
959            { cp950_mbtowc, NULL },       { cp950_wctomb, NULL })
960
961DEFENCODING(( "BIG5-HKSCS:1999",
962            ),
963            big5hkscs1999,
964            { big5hkscs1999_mbtowc, big5hkscs1999_flushwc }, { big5hkscs1999_wctomb, big5hkscs1999_reset })
965
966DEFENCODING(( "BIG5-HKSCS:2001",
967            ),
968            big5hkscs2001,
969            { big5hkscs2001_mbtowc, big5hkscs2001_flushwc }, { big5hkscs2001_wctomb, big5hkscs2001_reset })
970
971DEFENCODING(( "BIG5-HKSCS:2004",
972            ),
973            big5hkscs2004,
974            { big5hkscs2004_mbtowc, big5hkscs2004_flushwc }, { big5hkscs2004_wctomb, big5hkscs2004_reset })
975
976DEFENCODING(( "BIG5-HKSCS",             /* IANA */
977              "BIG5HKSCS",              /* glibc */
978              "BIG5-HKSCS:2008",
979            ),
980            big5hkscs2008,
981            { big5hkscs2008_mbtowc, big5hkscs2008_flushwc }, { big5hkscs2008_wctomb, big5hkscs2008_reset })
982
983DEFENCODING(( "EUC-KR",                 /* IANA, RFC 1557 */
984              "EUCKR",                  /* glibc, HP-UX, IRIX, OSF/1 */
985              "csEUCKR",                /* IANA */
986            /*"EUC_KR",                    JDK 1.1 */
987            /*"CP51949",                   Windows */
988            ),
989            euc_kr,
990            { euc_kr_mbtowc, NULL },      { euc_kr_wctomb, NULL })
991#ifdef USE_AIX_ALIASES
992DEFALIAS(     "IBM-EUCKR",              /* AIX */
993            euc_kr)
994#endif
995#ifdef USE_OSF1_ALIASES
996DEFALIAS(     "DECKOREAN",              /* OSF/1 */
997            euc_kr)
998#endif
999#ifdef USE_SOLARIS_ALIASES
1000DEFALIAS(     "5601",                   /* Solaris */
1001            euc_kr)
1002#endif
1003
1004DEFENCODING(( "CP949",                  /* JDK 1.1 */
1005              "UHC",                    /* glibc */
1006            ),
1007            cp949,
1008            { cp949_mbtowc, NULL },       { cp949_wctomb, NULL })
1009#ifdef USE_OSF1_ALIASES
1010DEFALIAS(     "KSC5601",                /* OSF/1 */
1011            cp949)
1012#endif
1013
1014DEFENCODING(( "JOHAB",                  /* glibc */
1015              "CP1361",                 /* glibc */
1016            ),
1017            johab,
1018            { johab_mbtowc, NULL },       { johab_wctomb, NULL })
1019#ifdef USE_SOLARIS_ALIASES
1020DEFALIAS(     "KO_KR.JOHAP92",          /* Solaris */
1021            johab)
1022#endif
1023
1024DEFENCODING(( "ISO-2022-KR",            /* IANA, RFC 1557 */
1025              "csISO2022KR",            /* IANA */
1026            /*"ISO2022KR",                 JDK 1.1 */
1027            ),
1028            iso2022_kr,
1029            { iso2022_kr_mbtowc, NULL },  { iso2022_kr_wctomb, iso2022_kr_reset })
1030
1031