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