1/* Copyright (C) 1999-2006 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
55/* General multi-byte encodings */
56
57DEFENCODING(( "UTF-8",                  /* IANA, RFC 2279 */
58            "UTF8",                     /* JDK 1.1 */
59            /*"CP65001",                   Windows */
60            ),
61            utf8,
62            { utf8_mbtowc, NULL },        { utf8_wctomb, NULL })
63
64DEFENCODING(( "UTF-8-MAC",              /* utf8-nfd */
65            "UTF8-MAC",                 /* label from samba 2.2jp */
66            ),
67            utf8mac,
68            { utf8mac_mbtowc, NULL },     { utf8mac_wctomb, NULL })
69
70DEFENCODING(( "UCS-2",                  /* glibc */
71              "ISO-10646-UCS-2",        /* IANA */
72              "csUnicode",              /* IANA */
73            ),
74            ucs2,
75            { ucs2_mbtowc, NULL },        { ucs2_wctomb, NULL })
76
77DEFENCODING(( "UCS-2BE",                /* glibc */
78              "UNICODEBIG",             /* glibc */
79              "UNICODE-1-1",            /* IANA */
80              "csUnicode11",            /* IANA */
81            /*"CP1201",                    Windows */
82            ),
83            ucs2be,
84            { ucs2be_mbtowc, NULL },      { ucs2be_wctomb, NULL })
85
86DEFENCODING(( "UCS-2LE",                /* glibc */
87              "UNICODELITTLE",          /* glibc */
88            /*"CP1200",                    Windows */
89            ),
90            ucs2le,
91            { ucs2le_mbtowc, NULL },      { ucs2le_wctomb, NULL })
92
93DEFENCODING(( "UCS-4",                  /* glibc */
94              "ISO-10646-UCS-4",        /* IANA */
95              "csUCS4",                 /* IANA */
96            ),
97            ucs4,
98            { ucs4_mbtowc, NULL },        { ucs4_wctomb, NULL })
99
100DEFENCODING(( "UCS-4BE",                /* glibc */
101            /*"CP12001",                   Windows */
102            ),
103            ucs4be,
104            { ucs4be_mbtowc, NULL },      { ucs4be_wctomb, NULL })
105
106DEFENCODING(( "UCS-4LE",                /* glibc */
107            /*"CP12000",                   Windows */
108            ),
109            ucs4le,
110            { ucs4le_mbtowc, NULL },      { ucs4le_wctomb, NULL })
111
112DEFENCODING(( "UTF-16",                 /* IANA, RFC 2781 */
113            ),
114            utf16,
115            { utf16_mbtowc, NULL },       { utf16_wctomb, NULL })
116
117DEFENCODING(( "UTF-16BE",               /* IANA, RFC 2781 */
118            ),
119            utf16be,
120            { utf16be_mbtowc, NULL },     { utf16be_wctomb, NULL })
121
122DEFENCODING(( "UTF-16LE",               /* IANA, RFC 2781 */
123            ),
124            utf16le,
125            { utf16le_mbtowc, NULL },     { utf16le_wctomb, NULL })
126
127DEFENCODING(( "UTF-32",                 /* IANA, Unicode 3.1 */
128            ),
129            utf32,
130            { utf32_mbtowc, NULL },       { utf32_wctomb, NULL })
131
132DEFENCODING(( "UTF-32BE",               /* IANA, Unicode 3.1 */
133            ),
134            utf32be,
135            { utf32be_mbtowc, NULL },     { utf32be_wctomb, NULL })
136
137DEFENCODING(( "UTF-32LE",               /* IANA, Unicode 3.1 */
138            ),
139            utf32le,
140            { utf32le_mbtowc, NULL },     { utf32le_wctomb, NULL })
141
142DEFENCODING(( "UTF-7",                  /* IANA, RFC 2152 */
143              "UNICODE-1-1-UTF-7",      /* IANA, RFC 1642 */
144              "csUnicode11UTF7",        /* IANA */
145            /*"CP65000",                   Windows */
146            ),
147            utf7,
148            { utf7_mbtowc, NULL },        { utf7_wctomb, utf7_reset })
149
150DEFENCODING(( "UCS-2-INTERNAL",         /* libiconv */
151            ),
152            ucs2internal,
153            { ucs2internal_mbtowc, NULL }, { ucs2internal_wctomb, NULL })
154
155DEFENCODING(( "UCS-2-SWAPPED",          /* libiconv */
156            ),
157            ucs2swapped,
158            { ucs2swapped_mbtowc, NULL }, { ucs2swapped_wctomb, NULL })
159
160DEFENCODING(( "UCS-4-INTERNAL",         /* libiconv */
161            ),
162            ucs4internal,
163            { ucs4internal_mbtowc, NULL },{ ucs4internal_wctomb, NULL })
164
165DEFENCODING(( "UCS-4-SWAPPED",          /* libiconv */
166            ),
167            ucs4swapped,
168            { ucs4swapped_mbtowc, NULL }, { ucs4swapped_wctomb, NULL })
169
170DEFENCODING(( "C99",
171            ),
172            c99,
173            { c99_mbtowc, NULL },         { c99_wctomb, NULL })
174
175DEFENCODING(( "JAVA",
176            ),
177            java,
178            { java_mbtowc, NULL },        { java_wctomb, NULL })
179
180/* Standard 8-bit encodings */
181
182DEFENCODING(( "ISO-8859-1",             /* IANA */
183              "ISO_8859-1",             /* IANA */
184              "ISO_8859-1:1987",        /* IANA */
185              "ISO-IR-100",             /* IANA */
186              "CP819",                  /* IANA */
187              "IBM819",                 /* IANA */
188              "LATIN1",                 /* IANA */
189              "L1",                     /* IANA */
190              "csISOLatin1",            /* IANA */
191              "ISO8859-1",              /* X11R6.4, glibc, FreeBSD */
192            /*"ISO8859_1",                 JDK 1.1 */
193            /*"CP28591",                   Windows */
194            ),
195            iso8859_1,
196            { iso8859_1_mbtowc, NULL },   { iso8859_1_wctomb, NULL })
197
198DEFENCODING(( "ISO-8859-2",             /* IANA */
199              "ISO_8859-2",             /* IANA */
200              "ISO_8859-2:1987",        /* IANA */
201              "ISO-IR-101",             /* IANA */
202              "LATIN2",                 /* IANA */
203              "L2",                     /* IANA */
204              "csISOLatin2",            /* IANA */
205              "ISO8859-2",              /* X11R6.4, glibc, FreeBSD */
206            /*"ISO8859_2",                 JDK 1.1 */
207            /*"CP28592",                   Windows */
208            ),
209            iso8859_2,
210            { iso8859_2_mbtowc, NULL },   { iso8859_2_wctomb, NULL })
211
212DEFENCODING(( "ISO-8859-3",             /* IANA */
213              "ISO_8859-3",             /* IANA */
214              "ISO_8859-3:1988",        /* IANA */
215              "ISO-IR-109",             /* IANA */
216              "LATIN3",                 /* IANA */
217              "L3",                     /* IANA */
218              "csISOLatin3",            /* IANA */
219              "ISO8859-3",              /* X11R6.4, glibc, FreeBSD */
220            /*"ISO8859_3",                 JDK 1.1 */
221            /*"CP28593",                   Windows */
222            ),
223            iso8859_3,
224            { iso8859_3_mbtowc, NULL },   { iso8859_3_wctomb, NULL })
225
226DEFENCODING(( "ISO-8859-4",             /* IANA */
227              "ISO_8859-4",             /* IANA */
228              "ISO_8859-4:1988",        /* IANA */
229              "ISO-IR-110",             /* IANA */
230              "LATIN4",                 /* IANA */
231              "L4",                     /* IANA */
232              "csISOLatin4",            /* IANA */
233              "ISO8859-4",              /* X11R6.4, glibc, FreeBSD */
234            /*"ISO8859_4",                 JDK 1.1 */
235            /*"CP28594",                   Windows */
236            ),
237            iso8859_4,
238            { iso8859_4_mbtowc, NULL },   { iso8859_4_wctomb, NULL })
239
240DEFENCODING(( "ISO-8859-5",             /* IANA */
241              "ISO_8859-5",             /* IANA */
242              "ISO_8859-5:1988",        /* IANA */
243              "ISO-IR-144",             /* IANA */
244              "CYRILLIC",               /* IANA */
245              "csISOLatinCyrillic",     /* IANA */
246              "ISO8859-5",              /* X11R6.4, glibc, FreeBSD */
247            /*"ISO8859_5",                 JDK 1.1 */
248            /*"CP28595",                   Windows */
249            ),
250            iso8859_5,
251            { iso8859_5_mbtowc, NULL },   { iso8859_5_wctomb, NULL })
252
253DEFENCODING(( "ISO-8859-6",             /* IANA */
254              "ISO_8859-6",             /* IANA */
255              "ISO_8859-6:1987",        /* IANA */
256              "ISO-IR-127",             /* IANA */
257              "ECMA-114",               /* IANA */
258              "ASMO-708",               /* IANA */
259              "ARABIC",                 /* IANA */
260              "csISOLatinArabic",       /* IANA */
261              "ISO8859-6",              /* X11R6.4, glibc, FreeBSD */
262            /*"ISO8859_6",                 JDK 1.1 */
263            /*"CP28596",                   Windows */
264            ),
265            iso8859_6,
266            { iso8859_6_mbtowc, NULL },   { iso8859_6_wctomb, NULL })
267
268DEFENCODING(( "ISO-8859-7",             /* IANA, RFC 1947 */
269              "ISO_8859-7",             /* IANA */
270              "ISO_8859-7:1987",        /* IANA */
271              "ISO_8859-7:2003",
272              "ISO-IR-126",             /* IANA */
273              "ECMA-118",               /* IANA */
274              "ELOT_928",               /* IANA */
275              "GREEK8",                 /* IANA */
276              "GREEK",                  /* IANA */
277              "csISOLatinGreek",        /* IANA */
278              "ISO8859-7",              /* X11R6.4, glibc, FreeBSD */
279            /*"ISO8859_7",                 JDK 1.1 */
280            /*"CP28597",                   Windows */
281            ),
282            iso8859_7,
283            { iso8859_7_mbtowc, NULL },   { iso8859_7_wctomb, NULL })
284
285DEFENCODING(( "ISO-8859-8",             /* IANA */
286              "ISO_8859-8",             /* IANA */
287              "ISO_8859-8:1988",        /* IANA */
288              "ISO-IR-138",             /* IANA */
289              "HEBREW",                 /* IANA */
290              "csISOLatinHebrew",       /* IANA */
291              "ISO8859-8",              /* X11R6.4, glibc, FreeBSD */
292            /*"ISO8859_8",                 JDK 1.1 */
293            /*"CP28598",                   Windows */
294            /*"CP38598",                   Windows */
295            ),
296            iso8859_8,
297            { iso8859_8_mbtowc, NULL },   { iso8859_8_wctomb, NULL })
298
299DEFENCODING(( "ISO-8859-9",             /* IANA */
300              "ISO_8859-9",             /* IANA */
301              "ISO_8859-9:1989",        /* IANA */
302              "ISO-IR-148",             /* IANA */
303              "LATIN5",                 /* IANA */
304              "L5",                     /* IANA */
305              "csISOLatin5",            /* IANA */
306              "ISO8859-9",              /* X11R6.4, glibc, FreeBSD */
307            /*"ISO8859_9",                 JDK 1.1 */
308            /*"CP28599",                   Windows */
309            ),
310            iso8859_9,
311            { iso8859_9_mbtowc, NULL },   { iso8859_9_wctomb, NULL })
312
313DEFENCODING(( "ISO-8859-10",            /* IANA */
314              "ISO_8859-10",
315              "ISO_8859-10:1992",       /* IANA */
316              "ISO-IR-157",             /* IANA */
317              "LATIN6",                 /* IANA */
318              "L6",                     /* IANA */
319              "csISOLatin6",            /* IANA */
320              "ISO8859-10",             /* X11R6.4, glibc, FreeBSD */
321            ),
322            iso8859_10,
323            { iso8859_10_mbtowc, NULL },  { iso8859_10_wctomb, NULL })
324
325DEFENCODING(( "ISO-8859-11",            /* glibc */
326              "ISO_8859-11",
327              "ISO8859-11",             /* X11R6.7, glibc */
328            ),
329            iso8859_11,
330            { iso8859_11_mbtowc, NULL },  { iso8859_11_wctomb, NULL })
331
332DEFENCODING(( "ISO-8859-13",            /* IANA, glibc */
333              "ISO_8859-13",
334              "ISO-IR-179",             /* glibc */
335              "LATIN7",                 /* glibc */
336              "L7",                     /* glibc */
337              "ISO8859-13",             /* glibc, FreeBSD */
338            ),
339            iso8859_13,
340            { iso8859_13_mbtowc, NULL },  { iso8859_13_wctomb, NULL })
341
342DEFENCODING(( "ISO-8859-14",            /* IANA, glibc */
343              "ISO_8859-14",            /* IANA */
344              "ISO_8859-14:1998",       /* IANA, glibc */
345              "ISO-IR-199",             /* IANA */
346              "LATIN8",                 /* IANA, glibc */
347              "L8",                     /* IANA, glibc */
348              "ISO-CELTIC",             /* IANA */
349              "ISO8859-14",             /* glibc, FreeBSD */
350            ),
351            iso8859_14,
352            { iso8859_14_mbtowc, NULL },  { iso8859_14_wctomb, NULL })
353
354DEFENCODING(( "ISO-8859-15",            /* IANA, glibc */
355              "ISO_8859-15",            /* IANA */
356              "ISO_8859-15:1998",       /* glibc */
357              "ISO-IR-203",
358              "LATIN-9",                /* IANA */
359              "ISO8859-15",             /* glibc, FreeBSD */
360            /*"CP28605",                   Windows */
361            ),
362            iso8859_15,
363            { iso8859_15_mbtowc, NULL },  { iso8859_15_wctomb, NULL })
364
365DEFENCODING(( "ISO-8859-16",            /* IANA */
366              "ISO_8859-16",            /* IANA */
367              "ISO_8859-16:2001",       /* IANA */
368              "ISO-IR-226",             /* IANA */
369              "LATIN10",                /* IANA */
370              "L10",                    /* IANA */
371              "ISO8859-16",             /* glibc, FreeBSD */
372            ),
373            iso8859_16,
374            { iso8859_16_mbtowc, NULL },  { iso8859_16_wctomb, NULL })
375
376DEFENCODING(( "KOI8-R",                 /* IANA, RFC 1489, X11R6.4, JDK 1.1 */
377              "csKOI8R",                /* IANA */
378            /*"CP20866",                   Windows */
379            ),
380            koi8_r,
381            { koi8_r_mbtowc, NULL },      { koi8_r_wctomb, NULL })
382
383DEFENCODING(( "KOI8-U",                 /* IANA, RFC 2319 */
384            ),
385            koi8_u,
386            { koi8_u_mbtowc, NULL },      { koi8_u_wctomb, NULL })
387
388DEFENCODING(( "KOI8-RU",
389            ),
390            koi8_ru,
391            { koi8_ru_mbtowc, NULL },     { koi8_ru_wctomb, NULL })
392
393/* Windows 8-bit encodings */
394
395DEFENCODING(( "CP1250",                 /* JDK 1.1 */
396              "WINDOWS-1250",           /* IANA */
397              "MS-EE",
398            ),
399            cp1250,
400            { cp1250_mbtowc, NULL },      { cp1250_wctomb, NULL })
401
402DEFENCODING(( "CP1251",                 /* JDK 1.1 */
403              "WINDOWS-1251",           /* IANA */
404              "MS-CYRL",
405            ),
406            cp1251,
407            { cp1251_mbtowc, NULL },      { cp1251_wctomb, NULL })
408
409DEFENCODING(( "CP1252",                 /* JDK 1.1 */
410              "WINDOWS-1252",           /* IANA */
411              "MS-ANSI",
412            ),
413            cp1252,
414            { cp1252_mbtowc, NULL },      { cp1252_wctomb, NULL })
415
416DEFENCODING(( "CP1253",                 /* JDK 1.1 */
417              "WINDOWS-1253",           /* IANA */
418              "MS-GREEK",
419            ),
420            cp1253,
421            { cp1253_mbtowc, NULL },      { cp1253_wctomb, NULL })
422
423DEFENCODING(( "CP1254",                 /* JDK 1.1 */
424              "WINDOWS-1254",           /* IANA */
425              "MS-TURK",
426            ),
427            cp1254,
428            { cp1254_mbtowc, NULL },      { cp1254_wctomb, NULL })
429
430DEFENCODING(( "CP1255",                 /* JDK 1.1 */
431              "WINDOWS-1255",           /* IANA */
432              "MS-HEBR",
433            ),
434            cp1255,
435            { cp1255_mbtowc, cp1255_flushwc }, { cp1255_wctomb, NULL })
436
437DEFENCODING(( "CP1256",                 /* JDK 1.1 */
438              "WINDOWS-1256",           /* IANA */
439              "MS-ARAB",
440            ),
441            cp1256,
442            { cp1256_mbtowc, NULL },      { cp1256_wctomb, NULL })
443
444DEFENCODING(( "CP1257",                 /* JDK 1.1 */
445              "WINDOWS-1257",           /* IANA */
446              "WINBALTRIM",
447            ),
448            cp1257,
449            { cp1257_mbtowc, NULL },      { cp1257_wctomb, NULL })
450
451DEFENCODING(( "CP1258",                 /* JDK 1.1 */
452              "WINDOWS-1258",           /* IANA */
453            ),
454            cp1258,
455            { cp1258_mbtowc, cp1258_flushwc }, { cp1258_wctomb, NULL })
456
457/* DOS 8-bit encodings */
458
459DEFENCODING(( "CP850",                  /* IANA, JDK 1.1 */
460              "IBM850",                 /* IANA */
461              "850",                    /* IANA */
462              "csPC850Multilingual",    /* IANA */
463            ),
464            cp850,
465            { cp850_mbtowc, NULL },       { cp850_wctomb, NULL })
466
467DEFENCODING(( "CP862",                  /* IANA, JDK 1.1 */
468              "IBM862",                 /* IANA */
469              "862",                    /* IANA */
470              "csPC862LatinHebrew",     /* IANA */
471            ),
472            cp862,
473            { cp862_mbtowc, NULL },       { cp862_wctomb, NULL })
474
475DEFENCODING(( "CP866",                  /* IANA, JDK 1.1 */
476              "IBM866",                 /* IANA */
477              "866",                    /* IANA */
478              "csIBM866",               /* IANA */
479            ),
480            cp866,
481            { cp866_mbtowc, NULL },       { cp866_wctomb, NULL })
482
483/* Macintosh 8-bit encodings */
484
485DEFENCODING(( "MacRoman",               /* JDK 1.1 */
486              /* This is the best table for MACINTOSH. The ones */
487              /* in glibc and FreeBSD-iconv are bad quality. */
488              "MACINTOSH",              /* IANA */
489              "MAC",                    /* IANA */
490              "csMacintosh",            /* IANA */
491            /*"CP10000",                   Windows */
492            ),
493            mac_roman,
494            { mac_roman_mbtowc, NULL },   { mac_roman_wctomb, NULL })
495
496DEFENCODING(( "MacCentralEurope",       /* JDK 1.1 */
497            /*"CP10029",                   Windows */
498            ),
499            mac_centraleurope,
500            { mac_centraleurope_mbtowc, NULL }, { mac_centraleurope_wctomb, NULL })
501
502DEFENCODING(( "MacIceland",             /* JDK 1.1 */
503            /*"CP10079",                   Windows */
504            ),
505            mac_iceland,
506            { mac_iceland_mbtowc, NULL }, { mac_iceland_wctomb, NULL })
507
508DEFENCODING(( "MacCroatian",            /* JDK 1.1 */
509            /*"CP10082",                   Windows */
510            ),
511            mac_croatian,
512            { mac_croatian_mbtowc, NULL }, { mac_croatian_wctomb, NULL })
513
514DEFENCODING(( "MacRomania",             /* JDK 1.1 */
515            /*"CP10010",                   Windows */
516            ),
517            mac_romania,
518            { mac_romania_mbtowc, NULL }, { mac_romania_wctomb, NULL })
519
520DEFENCODING(( "MacCyrillic",            /* JDK 1.1 */
521            /*"CP10007",                   Windows */
522            ),
523            mac_cyrillic,
524            { mac_cyrillic_mbtowc, NULL }, { mac_cyrillic_wctomb, NULL })
525
526DEFENCODING(( "MacUkraine",             /* JDK 1.1 */
527            /*"CP10017",                   Windows */
528            ),
529            mac_ukraine,
530            { mac_ukraine_mbtowc, NULL }, { mac_ukraine_wctomb, NULL })
531
532DEFENCODING(( "MacGreek",               /* JDK 1.1 */
533            /*"CP10006",                   Windows */
534            ),
535            mac_greek,
536            { mac_greek_mbtowc, NULL },   { mac_greek_wctomb, NULL })
537
538DEFENCODING(( "MacTurkish",             /* JDK 1.1 */
539            /*"CP10081",                   Windows */
540            ),
541            mac_turkish,
542            { mac_turkish_mbtowc, NULL }, { mac_turkish_wctomb, NULL })
543
544DEFENCODING(( "MacHebrew",              /* JDK 1.1 */
545            /*"CP10005",                   Windows */
546            ),
547            mac_hebrew,
548            { mac_hebrew_mbtowc, NULL },  { mac_hebrew_wctomb, NULL })
549
550DEFENCODING(( "MacArabic",              /* JDK 1.1 */
551            /*"CP10004",                   Windows */
552            ),
553            mac_arabic,
554            { mac_arabic_mbtowc, NULL },  { mac_arabic_wctomb, NULL })
555
556DEFENCODING(( "MacThai",                /* JDK 1.1 */
557            /*"CP10021",                   Windows */
558            ),
559            mac_thai,
560            { mac_thai_mbtowc, NULL },    { mac_thai_wctomb, NULL })
561
562/* Other platform specific 8-bit encodings */
563
564DEFENCODING(( "HP-ROMAN8",              /* IANA, X11R6.4 */
565              "ROMAN8",                 /* IANA */
566              "R8",                     /* IANA */
567              "csHPRoman8",             /* IANA */
568            ),
569            hp_roman8,
570            { hp_roman8_mbtowc, NULL },   { hp_roman8_wctomb, NULL })
571
572DEFENCODING(( "NEXTSTEP",
573            ),
574            nextstep,
575            { nextstep_mbtowc, NULL },    { nextstep_wctomb, NULL })
576
577/* Regional 8-bit encodings used for a single language */
578
579DEFENCODING(( "ARMSCII-8",
580            ),
581            armscii_8,
582            { armscii_8_mbtowc, NULL },   { armscii_8_wctomb, NULL })
583
584DEFENCODING(( "GEORGIAN-ACADEMY",
585            ),
586            georgian_academy,
587            { georgian_academy_mbtowc, NULL }, { georgian_academy_wctomb, NULL })
588
589DEFENCODING(( "GEORGIAN-PS",
590            ),
591            georgian_ps,
592            { georgian_ps_mbtowc, NULL }, { georgian_ps_wctomb, NULL })
593
594DEFENCODING(( "KOI8-T",
595            ),
596            koi8_t,
597            { koi8_t_mbtowc, NULL },      { koi8_t_wctomb, NULL })
598
599DEFENCODING(( "PT154",                  /* IANA, glibc */
600              "PTCP154",                /* IANA */
601              "CP154",                  /* IANA */
602              "CYRILLIC-ASIAN",         /* IANA */
603              "csPTCP154",              /* IANA */
604            ),
605            pt154,
606            { pt154_mbtowc, NULL },       { pt154_wctomb, NULL })
607
608DEFENCODING(( "MULELAO-1",
609            ),
610            mulelao,
611            { mulelao_mbtowc, NULL },     { mulelao_wctomb, NULL })
612
613DEFENCODING(( "CP1133",
614              "IBM-CP1133",
615            ),
616            cp1133,
617            { cp1133_mbtowc, NULL },      { cp1133_wctomb, NULL })
618
619DEFENCODING(( "TIS-620",                /* IANA */
620              "TIS620",                 /* glibc */
621              "TIS620-0",               /* glibc */
622              "TIS620.2529-1",          /* glibc */
623              "TIS620.2533-0",          /* glibc */
624              "TIS620.2533-1",
625              "ISO-IR-166",             /* glibc */
626            ),
627            tis620,
628            { tis620_mbtowc, NULL },      { tis620_wctomb, NULL })
629
630DEFENCODING(( "CP874",                  /* JDK 1.1 */
631              "WINDOWS-874",
632            ),
633            cp874,
634            { cp874_mbtowc, NULL },       { cp874_wctomb, NULL })
635
636DEFENCODING(( "VISCII",                 /* IANA, RFC 1456 */
637              "VISCII1.1-1",
638              "csVISCII",               /* IANA */
639            ),
640            viscii,
641            { viscii_mbtowc, NULL },      { viscii_wctomb, NULL })
642
643DEFENCODING(( "TCVN",
644              "TCVN-5712",
645              "TCVN5712-1",
646              "TCVN5712-1:1993",
647            ),
648            tcvn,
649            { tcvn_mbtowc, tcvn_flushwc }, { tcvn_wctomb, NULL })
650
651/* CJK character sets (not documented) */
652
653DEFENCODING(( "JIS_C6220-1969-RO",      /* IANA */
654              "ISO646-JP",              /* IANA */
655              "ISO-IR-14",              /* IANA */
656              "JP",                     /* IANA */
657              "csISO14JISC6220ro",      /* IANA */
658            ),
659            iso646_jp,
660            { iso646_jp_mbtowc, NULL },   { iso646_jp_wctomb, NULL })
661
662DEFENCODING(( "JIS_X0201",              /* IANA */
663              "JISX0201-1976",
664              "X0201",                  /* IANA */
665              "csHalfWidthKatakana",    /* IANA */
666            /*"JISX0201.1976-0",           X11R6.4 */
667            /*"JIS0201",                   JDK 1.1 */
668            ),
669            jisx0201,
670            { jisx0201_mbtowc, NULL },    { jisx0201_wctomb, NULL })
671
672DEFENCODING(( "JIS_X0208",
673              "JIS_X0208-1983",         /* IANA */
674              "JIS_X0208-1990",
675              "JIS0208",
676              "X0208",                  /* IANA */
677              "ISO-IR-87",              /* IANA */
678              "JIS_C6226-1983",         /* IANA */
679              "csISO87JISX0208",        /* IANA */
680            /*"JISX0208.1983-0",           X11R6.4 */
681            /*"JISX0208.1990-0",           X11R6.4 */
682            /*"JIS0208",                   JDK 1.1 */
683            ),
684            jisx0208,
685            { jisx0208_mbtowc, NULL },    { jisx0208_wctomb, NULL })
686
687DEFENCODING(( "JIS_X0212",
688              "JIS_X0212.1990-0",
689              "JIS_X0212-1990",         /* IANA */
690              "X0212",                  /* IANA */
691              "ISO-IR-159",             /* IANA */
692              "csISO159JISX02121990",   /* IANA */
693            /*"JISX0212.1990-0",           X11R6.4 */
694            /*"JIS0212",                   JDK 1.1 */
695            ),
696            jisx0212,
697            { jisx0212_mbtowc, NULL },    { jisx0212_wctomb, NULL })
698
699DEFENCODING(( "GB_1988-80",             /* IANA */
700              "ISO646-CN",              /* IANA */
701              "ISO-IR-57",              /* IANA */
702              "CN",                     /* IANA */
703              "csISO57GB1988",          /* IANA */
704            ),
705            iso646_cn,
706            { iso646_cn_mbtowc, NULL },   { iso646_cn_wctomb, NULL })
707
708DEFENCODING(( "GB_2312-80",             /* IANA */
709              "ISO-IR-58",              /* IANA */
710              "csISO58GB231280",        /* IANA */
711              "CHINESE",                /* IANA */
712            /*"GB2312.1980-0",             X11R6.4 */
713            ),
714            gb2312,
715            { gb2312_mbtowc, NULL },      { gb2312_wctomb, NULL })
716
717DEFENCODING(( "ISO-IR-165",
718              "CN-GB-ISOIR165",         /* RFC 1922 */
719            ),
720            isoir165,
721            { isoir165_mbtowc, NULL },    { isoir165_wctomb, NULL })
722
723DEFENCODING(( "KSC_5601",               /* IANA */
724              "KS_C_5601-1987",         /* IANA */
725              "KS_C_5601-1989",         /* IANA */
726              "ISO-IR-149",             /* IANA */
727              "csKSC56011987",          /* IANA */
728              "KOREAN",                 /* IANA */
729            /*"KSC5601.1987-0",            X11R6.4 */
730            /*"KSX1001:1992",              Ken Lunde */
731            ),
732            ksc5601,
733            { ksc5601_mbtowc, NULL },     { ksc5601_wctomb, NULL })
734
735/* CJK encodings */
736
737DEFENCODING(( "EUC-JP",                 /* IANA */
738              "EUCJP",                  /* glibc */
739              "Extended_UNIX_Code_Packed_Format_for_Japanese", /* IANA */
740              "csEUCPkdFmtJapanese",    /* IANA */
741            /*"EUC_JP",                    JDK 1.1 */
742            /*"CP51932",                   Windows */
743            ),
744            euc_jp,
745            { euc_jp_mbtowc, NULL },      { euc_jp_wctomb, NULL })
746
747DEFENCODING(( "SHIFT_JIS",              /* IANA */
748              "SHIFT-JIS",              /* glibc */
749              "SJIS",                   /* JDK 1.1 */
750              "MS_KANJI",               /* IANA */
751              "csShiftJIS",             /* IANA */
752            ),
753            sjis,
754            { sjis_mbtowc, NULL },        { sjis_wctomb, NULL })
755
756DEFENCODING(( "CP932",                  /* glibc */
757            ),
758            cp932,
759            { cp932_mbtowc, NULL },       { cp932_wctomb, NULL })
760
761DEFENCODING(( "ISO-2022-JP",            /* IANA, RFC 1468 */
762              "csISO2022JP",            /* IANA */
763            /*"ISO2022JP",                 JDK 1.1 */
764            ),
765            iso2022_jp,
766            { iso2022_jp_mbtowc, NULL },  { iso2022_jp_wctomb, iso2022_jp_reset })
767
768DEFENCODING(( "ISO-2022-JP-1",          /* RFC 2237 */
769            ),
770            iso2022_jp1,
771            { iso2022_jp1_mbtowc, NULL }, { iso2022_jp1_wctomb, iso2022_jp1_reset })
772
773DEFENCODING(( "ISO-2022-JP-2",          /* IANA, RFC 1554 */
774              "csISO2022JP2",           /* IANA */
775            ),
776            iso2022_jp2,
777            { iso2022_jp2_mbtowc, NULL }, { iso2022_jp2_wctomb, iso2022_jp2_reset })
778
779DEFENCODING(( "EUC-CN",                 /* glibc */
780              "EUCCN",                  /* glibc */
781              "GB2312",                 /* IANA */
782              "CN-GB",                  /* RFC 1922 */
783              "csGB2312",               /* IANA */
784            /*"EUC_CN",                    JDK 1.1 */
785            /*"CP51936",                   Windows */
786            ),
787            euc_cn,
788            { euc_cn_mbtowc, NULL },      { euc_cn_wctomb, NULL })
789
790DEFENCODING(( "GBK",                    /* IANA, JDK 1.1 */
791            ),
792            ces_gbk,
793            { ces_gbk_mbtowc, NULL },     { ces_gbk_wctomb, NULL })
794
795DEFENCODING(( "CP936",                  /* IANA */
796              "MS936",                  /* IANA */
797              "WINDOWS-936",            /* IANA */
798            ),
799            cp936,
800            { cp936_mbtowc, NULL },       { cp936_wctomb, NULL })
801
802DEFENCODING(( "GB18030",                /* IANA, glibc */
803            /*"CP54936",                   Windows */
804            ),
805            gb18030,
806            { gb18030_mbtowc, NULL },     { gb18030_wctomb, NULL })
807
808DEFENCODING(( "ISO-2022-CN",            /* IANA, RFC 1922 */
809              "csISO2022CN",
810            /*"ISO2022CN",                 JDK 1.1 */
811            ),
812            iso2022_cn,
813            { iso2022_cn_mbtowc, NULL },  { iso2022_cn_wctomb, iso2022_cn_reset })
814
815DEFENCODING(( "ISO-2022-CN-EXT",        /* IANA, RFC 1922 */
816            ),
817            iso2022_cn_ext,
818            { iso2022_cn_ext_mbtowc, NULL }, { iso2022_cn_ext_wctomb, iso2022_cn_ext_reset })
819
820DEFENCODING(( "HZ",                     /* RFC 1843 */
821              "HZ-GB-2312",             /* IANA, RFC 1842 */
822            ),
823            hz,
824            { hz_mbtowc, NULL },          { hz_wctomb, hz_reset })
825
826DEFENCODING(( "EUC-TW",                 /* glibc */
827              "EUCTW",                  /* glibc */
828              "csEUCTW",
829            /*"EUC_TW",                    JDK 1.1 */
830            /*"CP51950",                   Windows */
831            ),
832            euc_tw,
833            { euc_tw_mbtowc, NULL },      { euc_tw_wctomb, NULL })
834
835DEFENCODING(( "BIG5",                   /* IANA, JDK 1.1 */
836              "BIG-5",                  /* glibc */
837              "BIG-FIVE",               /* glibc */
838              "BIGFIVE",                /* glibc */
839              "CN-BIG5",                /* RFC 1922 */
840              "csBig5",                 /* IANA */
841            ),
842            ces_big5,
843            { ces_big5_mbtowc, NULL },    { ces_big5_wctomb, NULL })
844
845DEFENCODING(( "CP950",                  /* JDK 1.1 */
846            ),
847            cp950,
848            { cp950_mbtowc, NULL },       { cp950_wctomb, NULL })
849
850DEFENCODING(( "BIG5-HKSCS:1999",
851            ),
852            big5hkscs1999,
853            { big5hkscs1999_mbtowc, big5hkscs1999_flushwc }, { big5hkscs1999_wctomb, big5hkscs1999_reset })
854
855DEFENCODING(( "BIG5-HKSCS:2001",
856            ),
857            big5hkscs2001,
858            { big5hkscs2001_mbtowc, big5hkscs2001_flushwc }, { big5hkscs2001_wctomb, big5hkscs2001_reset })
859
860DEFENCODING(( "BIG5-HKSCS",             /* IANA */
861              "BIG5HKSCS",              /* glibc */
862              "BIG5-HKSCS:2004",
863            ),
864            big5hkscs2004,
865            { big5hkscs2004_mbtowc, big5hkscs2004_flushwc }, { big5hkscs2004_wctomb, big5hkscs2004_reset })
866
867DEFENCODING(( "EUC-KR",                 /* IANA, RFC 1557 */
868              "EUCKR",                  /* glibc */
869              "csEUCKR",                /* IANA */
870            /*"EUC_KR",                    JDK 1.1 */
871            /*"CP51949",                   Windows */
872            ),
873            euc_kr,
874            { euc_kr_mbtowc, NULL },      { euc_kr_wctomb, NULL })
875
876DEFENCODING(( "CP949",                  /* JDK 1.1 */
877              "UHC",                    /* glibc */
878            ),
879            cp949,
880            { cp949_mbtowc, NULL },       { cp949_wctomb, NULL })
881
882DEFENCODING(( "JOHAB",                  /* glibc */
883              "CP1361",                 /* glibc */
884            ),
885            johab,
886            { johab_mbtowc, NULL },       { johab_wctomb, NULL })
887
888DEFENCODING(( "ISO-2022-KR",            /* IANA, RFC 1557 */
889              "csISO2022KR",            /* IANA */
890            /*"ISO2022KR",                 JDK 1.1 */
891            ),
892            iso2022_kr,
893            { iso2022_kr_mbtowc, NULL },  { iso2022_kr_wctomb, iso2022_kr_reset })
894
895