Upgrade to libiconv-1.2.
diff --git a/ChangeLog b/ChangeLog
index d3da71d..5af305d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2000-03-15  Bruno Haible  <haible@clisp.cons.org>
+
+        * Version 1.2 released.
+        * include/iconv.h.in (_LIBICONV_VERSION): Bump version number.
+        * src/Makefile.in (LIBICONV_VERSION_INFO): Define to 1:1:1.
+
+2000-03-14  Bruno Haible  <haible@clisp.cons.org>
+
+        Implement and document UTF-16BE and UTF16-LE.
+        * src/utf16be.h, src/utf16le.h: New files.
+        * src/converters.h: Include them.
+        * src/encodings.def (UTF-16BE, UTF16-LE): New encodings.
+        * README, man/iconv_open.3: Add UTF-16BE, UTF16-LE.
+        * tests/Makefile.in (check): Check UTF-16, UTF-16BE, UTF16-LE.
+        * tests/UTF-16*snippet*: New files.
+
+        * src/utf16.h (utf16_wctomb): Output a byte order mark.
+
 2000-03-13  Bruno Haible  <haible@clisp.cons.org>
 
         Provide all encodings used by AIX locales.
@@ -104,7 +122,7 @@
         * src/uhc_1.h, src/uhc_2.h: New files.
         * src/cp949.h: New file, include them.
         * src/converters.h: Include it.
-        * encodings.def (KSC_5601): Remove alias CP949.
+        * src/encodings.def (KSC_5601): Remove alias CP949.
           (CP949): New encoding.
         * README, man/iconv_open.3: Add CP949.
         * tests/Makefile.in (check): Check CP949.
diff --git a/NEWS b/NEWS
index 8709d40..a2f2829 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+New in 1.2:
+* Added UTF-16BE and UTF16-LE converters.
+* Changed the UTF-16 encoder.
+* Fixed the treatment of tab characters in the UTF-7 converter.
+* Fixed an internal error when output buffer was not large enough.
+
 New in 1.1:
 * Added ISO-8859-16 converter.
 * Added CP932 converter, a variant of SHIFT-JIS.
diff --git a/NOTES b/NOTES
index fca9d49..a702942 100644
--- a/NOTES
+++ b/NOTES
@@ -269,9 +269,10 @@
    Full Unicode
      * UTF-8, UCS-2, UCS-4
        We implement these. Obviously.
-     * UTF-16
-       We implement this, because it is still the favourite encoding of the
-       president of the Unicode Consortium (for political reasons).
+     * UTF-16, UTF-16BE, UTF-16LE
+       We implement these, because UTF-16 is still the favourite encoding of
+       the president of the Unicode Consortium (for political reasons), and
+       because they appear in RFC 2781.
      * UTF-7
        We implement this because it is essential functionality for mail
        applications.
diff --git a/README b/README
index d465d5b..58eeffa 100644
--- a/README
+++ b/README
@@ -33,7 +33,7 @@
     Platform specifics
         HP-ROMAN8, NEXTSTEP
     Full Unicode
-        UTF-8, UCS-2, UCS-4, UTF-16, UTF-7, JAVA
+        UTF-8, UCS-2, UCS-4, UTF-16, UTF-16BE, UTF-16LE, UTF-7, JAVA
     Full Unicode, in terms of `uint16_t' or `uint32_t'
         (with machine dependent endianness and alignment)
         UCS-2-INTERNAL, UCS-4-INTERNAL
diff --git a/include/iconv.h.in b/include/iconv.h.in
index 9db4775..ec59fa0 100644
--- a/include/iconv.h.in
+++ b/include/iconv.h.in
@@ -21,7 +21,7 @@
 #ifndef _LIBICONV_H
 #define _LIBICONV_H
 
-#define _LIBICONV_VERSION 0x0101    /* version number: (major<<8) + minor */
+#define _LIBICONV_VERSION 0x0102    /* version number: (major<<8) + minor */
 
 /* We would like to #include any system header file which could define
    iconv_t, 1. in order to eliminate the risk that the user gets compilation
diff --git a/include/iconv.h.msvc b/include/iconv.h.msvc
index 92edb40..6f49d45 100644
--- a/include/iconv.h.msvc
+++ b/include/iconv.h.msvc
@@ -21,7 +21,7 @@
 #ifndef _LIBICONV_H
 #define _LIBICONV_H
 
-#define _LIBICONV_VERSION 0x0101    /* version number: (major<<8) + minor */
+#define _LIBICONV_VERSION 0x0102    /* version number: (major<<8) + minor */
 
 /* We would like to #include any system header file which could define
    iconv_t, 1. in order to eliminate the risk that the user gets compilation
diff --git a/man/iconv_open.3 b/man/iconv_open.3
index 94fba9a..3c796ac 100644
--- a/man/iconv_open.3
+++ b/man/iconv_open.3
@@ -9,7 +9,7 @@
 .\"   GNU glibc-2 source code and manual
 .\"   OpenGroup's Single Unix specification http://www.UNIX-systems.org/online.html
 .\"
-.TH ICONV_OPEN 3  "January 18, 2000" "GNU" "Linux Programmer's Manual"
+.TH ICONV_OPEN 3  "March 14, 2000" "GNU" "Linux Programmer's Manual"
 .SH NAME
 iconv_open \- allocate descriptor for character set conversion
 .SH SYNOPSIS
@@ -66,7 +66,7 @@
 HP-ROMAN8, NEXTSTEP
 .TP
 Full Unicode
-UTF-8, UCS-2, UCS-4, UTF-16, UTF-7, JAVA
+UTF-8, UCS-2, UCS-4, UTF-16, UTF-16BE, UTF-16LE, UTF-7, JAVA
 .TP
 Full Unicode, in terms of \fBuint16_t\fP or \fBuint32_t\fP
 (with machine dependent endianness and alignment)
diff --git a/src/Makefile.in b/src/Makefile.in
index 1a8957d..10ed563 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -70,7 +70,6 @@
 iconv.lo : $(srcdir)/iconv.c $(srcdir)/converters.h $(srcdir)/encodings.def $(srcdir)/encodings_aix.def $(srcdir)/aliases.h $(srcdir)/aliases_aix.h $(srcdir)/flags.h
 	$(LIBTOOL_COMPILE) $(CC) $(CFLAGS) $(INCLUDES) -c $(srcdir)/iconv.c
 
-
 # Installs the library and include files only. Typically called with only
 # $(libdir) and $(includedir) - don't use $(prefix) and $(exec_prefix) here.
 install-lib : all force
diff --git a/src/aliases.gperf b/src/aliases.gperf
index 881af05..d030437 100644
--- a/src/aliases.gperf
+++ b/src/aliases.gperf
@@ -18,6 +18,8 @@
 ISO-10646-UCS-4, ei_ucs4
 CSUCS4, ei_ucs4
 UTF-16, ei_utf16
+UTF-16BE, ei_utf16be
+UTF-16LE, ei_utf16le
 UTF-7, ei_utf7
 UNICODE-1-1-UTF-7, ei_utf7
 CSUNICODE11UTF7, ei_utf7
diff --git a/src/aliases.h b/src/aliases.h
index 7127360..fd4ab4c 100644
--- a/src/aliases.h
+++ b/src/aliases.h
@@ -2,12 +2,12 @@
 /* Command-line: gperf -t -L ANSI-C -H aliases_hash -N aliases_lookup -7 -C -k 1,3-11,$ src/aliases.gperf  */
 struct alias { const char* name; unsigned int encoding_index; };
 
-#define TOTAL_KEYWORDS 291
+#define TOTAL_KEYWORDS 293
 #define MIN_WORD_LENGTH 2
 #define MAX_WORD_LENGTH 45
 #define MIN_HASH_VALUE 4
-#define MAX_HASH_VALUE 2380
-/* maximum key range = 2377, duplicates = 0 */
+#define MAX_HASH_VALUE 2362
+/* maximum key range = 2359, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -17,19 +17,19 @@
 {
   static const unsigned short asso_values[] =
     {
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381,    0,   40, 2381,  130,  150,
-        50,  510,  220,   20,   30,  493,    0,  115,  130, 2381,
-      2381, 2381, 2381, 2381, 2381,  384,  480,  323,  470,    0,
-        20,   45,   25,    0,    0,   70,  320,   30,   15,    0,
-       105, 2381,   60,    0,    0,  275,   30,    0,   15,   30,
-         0, 2381, 2381, 2381, 2381,  500, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381,
-      2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363,    0,   15, 2363,   45,  230,
+        75,  460,  510,   25,   35,  455,    0,  115,  160, 2363,
+      2363, 2363, 2363, 2363, 2363,  406,  115,  290,  200,    0,
+        65,  295,  100,    0,    5,  358,   40,   60,   15,    0,
+        10, 2363,   60,    0,    0,  180,   40,    0,   90,   10,
+         0, 2363, 2363, 2363, 2363,  340, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363,
+      2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363
     };
   register int hval = len;
 
@@ -73,606 +73,605 @@
       {""}, {""}, {""}, {""},
       {"SJIS", ei_sjis},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"HZ", ei_hz},
-      {""},
-      {"SHIFT-JIS", ei_sjis},
-      {""}, {""}, {""}, {""}, {""},
-      {"MS-EE", ei_cp1250},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"R8", ei_hp_roman8},
-      {"866", ei_cp866},
-      {"TCVN", ei_tcvn},
+      {""}, {""}, {""},
+      {"JP", ei_iso646_jp},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-58", ei_gb2312},
+      {"L8", ei_iso8859_14},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"JP", ei_iso646_jp},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"GREEK8", ei_iso8859_7},
-      {""}, {""}, {""}, {""},
-      {"IBM866", ei_cp866},
+      {"LATIN8", ei_iso8859_14},
+      {"R8", ei_hp_roman8},
+      {""}, {""},
+      {"MS-EE", ei_cp1250},
       {""},
+      {"L5", ei_iso8859_9},
+      {""}, {""}, {""}, {""}, {""},
+      {"866", ei_cp866},
+      {"TCVN", ei_tcvn},
+      {""}, {""},
+      {"L6", ei_iso8859_10},
+      {""},
+      {"SHIFT-JIS", ei_sjis},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"850", ei_cp850},
+      {"ISO-IR-58", ei_gb2312},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"HZ", ei_hz},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"LATIN5", ei_iso8859_9},
+      {""}, {""}, {""}, {""}, {""},
+      {"L2", ei_iso8859_2},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"LATIN6", ei_iso8859_10},
+      {""},
+      {"NEXTSTEP", ei_nextstep},
+      {""}, {""}, {""}, {""},
       {"ISO-IR-6", ei_ascii},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
       {"ISO-8859-8", ei_iso8859_8},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"ISO-8859-5", ei_iso8859_5},
       {""}, {""},
-      {"GBK", ei_ces_gbk},
-      {""},
-      {"GREEK", ei_iso8859_7},
+      {"IBM866", ei_cp866},
       {""}, {""}, {""}, {""}, {""},
-      {"KOI8-R", ei_koi8_r},
+      {"JIS0208", ei_jisx0208},
+      {""}, {""}, {""},
+      {"IBM850", ei_cp850},
+      {"US", ei_ascii},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-8859-5", ei_iso8859_5},
+      {""}, {""}, {""}, {""}, {""},
+      {"TIS620", ei_tis620},
+      {"TIS-620", ei_tis620},
+      {""}, {""}, {""},
+      {"LATIN2", ei_iso8859_2},
       {""}, {""}, {""},
       {"X0208", ei_jisx0208},
       {""}, {""}, {""}, {""},
       {"ISO-8859-6", ei_iso8859_6},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-226", ei_iso8859_16},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-      {"ISO-8859-2", ei_iso8859_2},
       {""}, {""},
-      {"NEXTSTEP", ei_nextstep},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-      {"850", ei_cp850},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"US", ei_ascii},
-      {""}, {""}, {""}, {""}, {""},
-      {"MS-GREEK", ei_cp1253},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-165", ei_isoir165},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {"UTF-8", ei_utf8},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-166", ei_tis620},
-      {""}, {""}, {""}, {""}, {""},
-      {"IBM850", ei_cp850},
-      {"JIS0208", ei_jisx0208},
       {""}, {""},
-      {"X0212", ei_jisx0212},
-      {""},
-      {"L8", ei_iso8859_14},
-      {""}, {""}, {""}, {""}, {""},
+      {"TIS620-0", ei_tis620},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"L1", ei_iso8859_1},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"HEBREW", ei_iso8859_8},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-226", ei_iso8859_16},
+      {""}, {""}, {""}, {""},
       {"EUCTW", ei_euc_tw},
       {"EUC-TW", ei_euc_tw},
-      {"ISO-IR-126", ei_iso8859_7},
-      {""}, {""}, {""}, {""}, {""},
-      {"ISO-8859-15", ei_iso8859_15},
       {""}, {""}, {""},
-      {"CN", ei_iso646_cn},
-      {"LATIN8", ei_iso8859_14},
-      {"L5", ei_iso8859_9},
+      {"ISO-8859-2", ei_iso8859_2},
       {""}, {""},
-      {"CHINESE", ei_gb2312},
-      {"TIS620", ei_tis620},
-      {"TIS-620", ei_tis620},
-      {""}, {""}, {""}, {""},
-      {"L6", ei_iso8859_10},
-      {""}, {""}, {""},
-      {"ISO-8859-16", ei_iso8859_16},
+      {"UCS-2-LE", ei_ucs2le},
       {""}, {""},
-      {"VISCII", ei_viscii},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"L2", ei_iso8859_2},
-      {""}, {""},
-      {"ISO-8859-9", ei_iso8859_9},
-      {""}, {""},
-      {"CSSHIFTJIS", ei_sjis},
-      {""},
-      {"UCS-2", ei_ucs2},
-      {"LATIN5", ei_iso8859_9},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"LATIN6", ei_iso8859_10},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
-      {"IBM819", ei_iso8859_1},
-      {""},
-      {"CP866", ei_cp866},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MACINTOSH", ei_mac_roman},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MS-ANSI", ei_cp1252},
-      {""}, {""}, {""},
-      {"ISO-IR-148", ei_iso8859_9},
-      {"LATIN2", ei_iso8859_2},
-      {""}, {""}, {""},
-      {"ISO-8859-1", ei_iso8859_1},
-      {""}, {""},
-      {"ISO-2022-JP-2", ei_iso2022_jp2},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"ISO-IR-159", ei_jisx0212},
-      {""},
-      {"L1", ei_iso8859_1},
-      {""}, {""}, {""}, {""}, {""},
-      {"TIS620-0", ei_tis620},
-      {""}, {""},
-      {"ISO-2022-KR", ei_iso2022_kr},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"ROMAN8", ei_hp_roman8},
-      {""}, {""}, {""},
-      {"ISO646-JP", ei_iso646_jp},
-      {"X0201", ei_jisx0201},
       {"ISO-2022-JP", ei_iso2022_jp},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"UTF-16", ei_utf16},
-      {"MS-TURK", ei_cp1254},
-      {""}, {""}, {""}, {""}, {""},
-      {"EUCKR", ei_euc_kr},
-      {"EUC-KR", ei_euc_kr},
-      {"CSKOI8R", ei_koi8_r},
-      {""}, {""},
-      {"HP-ROMAN8", ei_hp_roman8},
-      {""}, {""}, {""}, {""}, {""},
-      {"SHIFT_JIS", ei_sjis},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CN", ei_iso646_cn},
+      {""}, {""}, {""}, {""},
+      {"CHINESE", ei_gb2312},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {"EUCJP", ei_euc_jp},
       {"EUC-JP", ei_euc_jp},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"UCS-2", ei_ucs2},
+      {"VISCII", ei_viscii},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-2022-JP-2", ei_iso2022_jp2},
+      {""}, {""}, {""}, {""},
+      {"UCS-2-BE", ei_ucs2be},
+      {""},
+      {"ISO-8859-9", ei_iso8859_9},
+      {""}, {""}, {""},
+      {"UCS-2-INTERNAL", ei_ucs2internal},
+      {"ISO-IR-165", ei_isoir165},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""},
+      {"CP866", ei_cp866},
+      {""},
+      {"MS-HEBR", ei_cp1255},
       {""}, {""},
-      {"L4", ei_iso8859_4},
+      {"ISO-IR-166", ei_tis620},
+      {""}, {""}, {""}, {""},
+      {"CP850", ei_cp850},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"SHIFT_JIS", ei_sjis},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"ISO-8859-15", ei_iso8859_15},
+      {""}, {""}, {""},
+      {"ISO-IR-100", ei_iso8859_1},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-126", ei_iso8859_7},
       {""}, {""}, {""}, {""}, {""},
-      {"ISO-2022-JP-1", ei_iso2022_jp1},
-      {"CP1258", ei_cp1258},
-      {"KOREAN", ei_ksc5601},
-      {""}, {""}, {""}, {""}, {""},
-      {"ISO-8859-10", ei_iso8859_10},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO646-US", ei_ascii},
-      {"ISO-IR-199", ei_iso8859_14},
+      {"ISO-8859-16", ei_iso8859_16},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""},
       {"BIG5", ei_ces_big5},
       {"BIG-5", ei_ces_big5},
-      {"HEBREW", ei_iso8859_8},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-109", ei_iso8859_3},
+      {""}, {""}, {""}, {""},
+      {"CSSHIFTJIS", ei_sjis},
+      {"ISO-8859-10", ei_iso8859_10},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""},
+      {"KOI8-R", ei_koi8_r},
+      {""}, {""}, {""},
+      {"MS-ANSI", ei_cp1252},
       {""},
+      {"ISO_8859-8", ei_iso8859_8},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"L7", ei_iso8859_13},
+      {""}, {""}, {""}, {""},
+      {"L3", ei_iso8859_3},
+      {""}, {""}, {""}, {""},
+      {"MS-CYRL", ei_cp1251},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"LATIN1", ei_iso8859_1},
       {"BIGFIVE", ei_ces_big5},
       {"BIG-FIVE", ei_ces_big5},
       {""},
-      {"ISO-8859-4", ei_iso8859_4},
-      {""}, {""}, {""},
-      {"CP1255", ei_cp1255},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MACGREEK", ei_mac_greek},
-      {""},
-      {"CP850", ei_cp850},
-      {"CP1256", ei_cp1256},
-      {"ISO-IR-100", ei_iso8859_1},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"KOI8-U", ei_koi8_u},
-      {""}, {""}, {""},
-      {"ISO-IR-110", ei_iso8859_4},
-      {""}, {""},
-      {"ISO-2022-CN-EXT", ei_iso2022_cn_ext},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"LATIN1", ei_iso8859_1},
-      {"ISO646-CN", ei_iso646_cn},
-      {""},
-      {"ISO-2022-CN", ei_iso2022_cn},
-      {"ISO_8859-8", ei_iso8859_8},
-      {""}, {""},
-      {"TIS620.2529-1", ei_tis620},
-      {"CP1252", ei_cp1252},
-      {"ISO-IR-101", ei_iso8859_2},
-      {""}, {""},
-      {"UCS-2-LE", ei_ucs2le},
-      {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-14", ei_iso646_jp},
-      {""}, {""},
-      {"MS-HEBR", ei_cp1255},
-      {""}, {""},
-      {"GEORGIAN-PS", ei_georgian_ps},
-      {""}, {""}, {""}, {""},
-      {"ISO-IR-149", ei_ksc5601},
-      {""}, {""},
-      {"ELOT_928", ei_iso8859_7},
-      {""}, {""}, {""}, {""}, {""},
-      {"MAC", ei_mac_roman},
-      {""},
-      {"EUCCN", ei_euc_cn},
-      {"EUC-CN", ei_euc_cn},
-      {""},
-      {"CSVISCII", ei_viscii},
-      {"ISO_8859-5", ei_iso8859_5},
-      {""},
-      {"KOI8-RU", ei_koi8_ru},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-6", ei_iso8859_6},
-      {""}, {""},
-      {"CP819", ei_iso8859_1},
-      {""}, {""}, {""},
-      {"ASCII", ei_ascii},
-      {""}, {""}, {""}, {""},
-      {"WINDOWS-1258", ei_cp1258},
-      {""}, {""},
-      {"UCS-4", ei_ucs4},
-      {""},
-      {"ECMA-118", ei_iso8859_7},
       {"CP950", ei_cp950},
+      {"IBM819", ei_iso8859_1},
+      {""},
+      {"ISO-2022-JP-1", ei_iso2022_jp1},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ELOT_928", ei_iso8859_7},
+      {""},
+      {"ISO_8859-5", ei_iso8859_5},
       {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-138", ei_iso8859_8},
-      {""}, {""}, {""},
-      {"UCS-2-INTERNAL", ei_ucs2internal},
-      {""},
-      {"ISO-8859-14", ei_iso8859_14},
-      {"WINDOWS-1255", ei_cp1255},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-2", ei_iso8859_2},
-      {"ARMSCII-8", ei_armscii_8},
-      {"WINDOWS-1256", ei_cp1256},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"CSISO159JISX02121990", ei_jisx0212},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"WINDOWS-1252", ei_cp1252},
-      {""},
-      {"MACTHAI", ei_mac_thai},
-      {"CSISO2022JP2", ei_iso2022_jp2},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-8:1988", ei_iso8859_8},
-      {"LATIN4", ei_iso8859_4},
-      {""},
-      {"JISX0201-1976", ei_jisx0201},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-5:1988", ei_iso8859_5},
-      {""},
-      {"JAVA", ei_java},
-      {""},
-      {"CSISO2022KR", ei_iso2022_kr},
-      {""}, {""}, {""}, {""},
-      {"CP1250", ei_cp1250},
-      {""}, {""}, {""},
-      {"UCS-2-BE", ei_ucs2be},
-      {""},
-      {"L7", ei_iso8859_13},
-      {""},
-      {"TCVN-5712", ei_tcvn},
-      {"MACTURKISH", ei_mac_turkish},
+      {"ROMAN8", ei_hp_roman8},
       {""}, {""},
-      {"ISO_8859-15:1998", ei_iso8859_15},
-      {""},
-      {"UCS-4-LE", ei_ucs4le},
-      {"CSISO2022JP", ei_iso2022_jp},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"L3", ei_iso8859_3},
-      {""},
-      {"JIS_X0208", ei_jisx0208},
-      {""},
-      {"ISO_8859-15", ei_iso8859_15},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"CSISO87JISX0208", ei_jisx0208},
-      {"WINDOWS-1250", ei_cp1250},
-      {""},
-      {"CP1251", ei_cp1251},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-16", ei_iso8859_16},
-      {""}, {""}, {""}, {""},
-      {"GB2312", ei_euc_cn},
-      {""}, {""}, {""},
-      {"MACROMAN", ei_mac_roman},
-      {""},
-      {"WINDOWS-1251", ei_cp1251},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-9", ei_iso8859_9},
-      {""}, {""}, {""}, {""},
-      {"ISO-IR-144", ei_iso8859_5},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"CP949", ei_cp949},
-      {"CSBIG5", ei_ces_big5},
-      {"CN-BIG5", ei_ces_big5},
-      {""}, {""}, {""}, {""},
-      {"ISO-10646-UCS-2", ei_ucs2},
-      {""}, {""}, {""},
-      {"UCS-4-INTERNAL", ei_ucs4internal},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"UHC", ei_cp949},
+      {"X0212", ei_jisx0212},
+      {"UTF-16", ei_utf16},
+      {"L4", ei_iso8859_4},
       {""}, {""},
-      {"MACHEBREW", ei_mac_hebrew},
-      {"CSEUCTW", ei_euc_tw},
+      {"ISO-IR-159", ei_jisx0212},
+      {""},
+      {"WINDOWS-1258", ei_cp1258},
+      {"UTF-16LE", ei_utf16le},
+      {""},
+      {"ISO_8859-6", ei_iso8859_6},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"MACINTOSH", ei_mac_roman},
+      {"ISO-IR-109", ei_iso8859_3},
       {""}, {""},
       {"CSIBM866", ei_cp866},
-      {""}, {""}, {""}, {""}, {""},
-      {"WINDOWS-1254", ei_cp1254},
+      {""}, {""}, {""},
+      {"WINDOWS-1255", ei_cp1255},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-2022-CN-EXT", ei_iso2022_cn_ext},
+      {""},
+      {"WINDOWS-1256", ei_cp1256},
+      {""}, {""}, {""},
+      {"CSISO2022JP", ei_iso2022_jp},
       {""}, {""}, {""}, {""},
-      {"CN-GB-ISOIR165", ei_isoir165},
-      {"ISO-IR-179", ei_iso8859_13},
-      {""},
-      {"ISO_8859-1", ei_iso8859_1},
+      {"ISO-2022-CN", ei_iso2022_cn},
+      {"WINDOWS-1250", ei_cp1250},
       {""}, {""}, {""}, {""}, {""}, {""},
-      {"CSHPROMAN8", ei_hp_roman8},
-      {""},
-      {"JIS_X0212", ei_jisx0212},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-16:2000", ei_iso8859_16},
+      {"JIS_X0208", ei_jisx0208},
+      {"ISO-8859-1", ei_iso8859_1},
+      {""}, {""}, {""},
+      {"ISO646-JP", ei_iso646_jp},
+      {"EUCCN", ei_euc_cn},
+      {"EUC-CN", ei_euc_cn},
+      {""}, {""}, {""},
+      {"ISO-IR-110", ei_iso8859_4},
       {""}, {""}, {""}, {""}, {""},
-      {"CSISO2022CN", ei_iso2022_cn},
+      {"CP1258", ei_cp1258},
+      {""},
+      {"CSVISCII", ei_viscii},
+      {""}, {""}, {""},
+      {"WINDOWS-1252", ei_cp1252},
+      {"UTF-16BE", ei_utf16be},
+      {"MACHEBREW", ei_mac_hebrew},
+      {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-2", ei_iso8859_2},
+      {""}, {""},
+      {"MAC", ei_mac_roman},
+      {""},
+      {"ISO-IR-199", ei_iso8859_14},
+      {""}, {""}, {""}, {""},
+      {"HP-ROMAN8", ei_hp_roman8},
+      {""}, {""}, {""}, {""},
+      {"ISO_8859-8:1988", ei_iso8859_8},
+      {""}, {""}, {""},
+      {"GREEK8", ei_iso8859_7},
+      {""}, {""},
+      {"CSISO2022JP2", ei_iso2022_jp2},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""},
+      {"X0201", ei_jisx0201},
+      {"CP1255", ei_cp1255},
+      {""}, {""}, {""},
+      {"ISO_8859-5:1988", ei_iso8859_5},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"CP1256", ei_cp1256},
+      {""}, {""}, {""}, {""},
+      {"ASCII", ei_ascii},
+      {""},
+      {"TIS620.2529-1", ei_tis620},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""},
+      {"CP1250", ei_cp1250},
+      {""}, {""}, {""},
+      {"ISO_8859-9", ei_iso8859_9},
+      {""}, {""},
+      {"UNICODELITTLE", ei_ucs2le},
+      {"KOI8-U", ei_koi8_u},
+      {""}, {""}, {""}, {""}, {""},
+      {"CSISO159JISX02121990", ei_jisx0212},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"UCS-4-LE", ei_ucs4le},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"JOHAB", ei_johab},
+      {""}, {""}, {""}, {""},
+      {"ISO_8859-15:1998", ei_iso8859_15},
+      {""}, {""}, {""},
+      {"CP819", ei_iso8859_1},
+      {"CSBIG5", ei_ces_big5},
+      {"CN-BIG5", ei_ces_big5},
+      {""},
+      {"ISO-2022-KR", ei_iso2022_kr},
+      {"ISO-IR-138", ei_iso8859_8},
+      {""}, {""},
+      {"UHC", ei_cp949},
+      {""},
+      {"ARMSCII-8", ei_armscii_8},
+      {"WINBALTRIM", ei_cp1257},
+      {"CSEUCTW", ei_euc_tw},
+      {""},
+      {"ISO646-US", ei_ascii},
+      {""},
+      {"ISO_8859-15", ei_iso8859_15},
+      {""},
+      {"EUCKR", ei_euc_kr},
+      {"EUC-KR", ei_euc_kr},
+      {"CSKOI8R", ei_koi8_r},
+      {"CP1252", ei_cp1252},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"KOI8-RU", ei_koi8_ru},
+      {""},
+      {"WINDOWS-1251", ei_cp1251},
+      {""}, {""}, {""},
+      {"ISO_8859-16", ei_iso8859_16},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CN-GB-ISOIR165", ei_isoir165},
+      {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-101", ei_iso8859_2},
+      {"ISO_8859-16:2000", ei_iso8859_16},
+      {""}, {""}, {""},
+      {"ISO-IR-148", ei_iso8859_9},
+      {"ISO_8859-10", ei_iso8859_10},
+      {"CSISOLATIN5", ei_iso8859_9},
+      {"UCS-4-BE", ei_ucs4be},
+      {""}, {""}, {""}, {""}, {""},
+      {"UCS-4-INTERNAL", ei_ucs4internal},
+      {"CN-GB", ei_euc_cn},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"CSISOLATIN6", ei_iso8859_10},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
       {"ISO_8859-10:1992", ei_iso8859_10},
-      {""},
-      {"UCS-4-BE", ei_ucs4be},
-      {""}, {""}, {""}, {""}, {""},
-      {"CP1254", ei_cp1254},
-      {"US-ASCII", ei_ascii},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-4:1988", ei_iso8859_4},
-      {""}, {""}, {""},
-      {"VISCII1.1-1", ei_viscii},
-      {""}, {""},
-      {"MS_KANJI", ei_sjis},
-      {""}, {""},
-      {"ISO_8859-9:1989", ei_iso8859_9},
-      {""}, {""},
-      {"CP936", ei_ces_gbk},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-14:1998", ei_iso8859_14},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"CSISO14JISC6220RO", ei_iso646_jp},
-      {""}, {""}, {""},
-      {"CSASCII", ei_ascii},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ASMO-708", ei_iso8859_6},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"CP932", ei_cp932},
-      {""},
-      {"ISO-IR-87", ei_jisx0208},
-      {"ISO_8859-10", ei_iso8859_10},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"TCVN5712-1", ei_tcvn},
-      {""},
-      {"ISO-10646-UCS-4", ei_ucs4},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CSISO87JISX0208", ei_jisx0208},
       {""}, {""}, {""}, {""},
-      {"ISO-IR-57", ei_iso646_cn},
-      {"ISO_646.IRV:1991", ei_ascii},
+      {"KOREAN", ei_ksc5601},
+      {"JAVA", ei_java},
+      {""},
+      {"MACTHAI", ei_mac_thai},
       {""}, {""}, {""},
-      {"GB_1988-80", ei_iso646_cn},
-      {""}, {""},
       {"CSISOLATINHEBREW", ei_iso8859_8},
-      {""},
-      {"ISO_8859-4", ei_iso8859_4},
-      {""}, {""}, {""}, {""},
-      {"MS-CYRL", ei_cp1251},
-      {""}, {""},
-      {"CSISOLATIN5", ei_iso8859_9},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"CSISOLATIN6", ei_iso8859_10},
-      {""}, {""}, {""}, {""},
-      {"CSEUCKR", ei_euc_kr},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"JISX0201-1976", ei_jisx0201},
+      {"US-ASCII", ei_ascii},
+      {"ISO_8859-9:1989", ei_iso8859_9},
+      {""}, {""}, {""},
       {"JIS_X0208-1990", ei_jisx0208},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"ISO-8859-7", ei_iso8859_7},
-      {""}, {""},
-      {"JIS_X0201", ei_jisx0201},
       {""},
-      {"CSMACINTOSH", ei_mac_roman},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"CSISOLATIN2", ei_iso8859_2},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ECMA-114", ei_iso8859_6},
+      {"CSISO2022CN", ei_iso2022_cn},
       {""}, {""},
-      {"ISO-8859-3", ei_iso8859_3},
-      {""},
-      {"MACUKRAINE", ei_mac_ukraine},
-      {""}, {""}, {""}, {""},
-      {"CSISOLATINGREEK", ei_iso8859_7},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"JIS_X0212-1990", ei_jisx0212},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"WINDOWS-1257", ei_cp1257},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-157", ei_iso8859_10},
-      {"WINDOWS-1253", ei_cp1253},
-      {""}, {""}, {""},
-      {"JIS_X0212.1990-0", ei_jisx0212},
-      {""}, {""}, {""}, {""},
-      {"ISO_8859-14", ei_iso8859_14},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"JIS_C6220-1969-RO", ei_iso646_jp},
-      {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-127", ei_iso8859_6},
-      {""}, {""}, {""}, {""},
-      {"CP874", ei_cp874},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO-IR-203", ei_iso8859_15},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"UTF-7", ei_utf7},
-      {""}, {""}, {""},
-      {"ISO_8859-3:1988", ei_iso8859_3},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"GEORGIAN-ACADEMY", ei_georgian_academy},
-      {"ISO_8859-6:1987", ei_iso8859_6},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-      {"ISO-8859-13", ei_iso8859_13},
-      {""}, {""},
-      {"CP1361", ei_johab},
-      {""}, {""}, {""},
-      {"ISO_8859-2:1987", ei_iso8859_2},
-      {""}, {""}, {""},
-      {"LATIN7", ei_iso8859_13},
-      {""},
-      {"WINBALTRIM", ei_cp1257},
-      {""}, {""}, {""},
-      {"CN-GB", ei_euc_cn},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"CSISOLATIN1", ei_iso8859_1},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"LATIN3", ei_iso8859_3},
-      {""},
-      {"MULELAO-1", ei_mulelao},
-      {""}, {""}, {""},
-      {"CSUCS4", ei_ucs4},
-      {""}, {""},
-      {"HZ-GB-2312", ei_hz},
-      {""}, {""}, {""},
-      {"JOHAB", ei_johab},
-      {""}, {""}, {""}, {""}, {""}, {""},
-      {"KSC_5601", ei_ksc5601},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"UNICODELITTLE", ei_ucs2le},
       {"UCS-2-SWAPPED", ei_ucs2swapped},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""},
+      {"ISO646-CN", ei_iso646_cn},
+      {""}, {""},
+      {"CSISOLATIN2", ei_iso8859_2},
+      {""},
+      {"MACROMAN", ei_mac_roman},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"TCVN-5712", ei_tcvn},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ECMA-118", ei_iso8859_7},
+      {""}, {""}, {""}, {""}, {""},
+      {"CP936", ei_ces_gbk},
       {""}, {""}, {""},
+      {"JIS_X0212", ei_jisx0212},
+      {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-1", ei_iso8859_1},
+      {"CSHPROMAN8", ei_hp_roman8},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+      {"LATIN7", ei_iso8859_13},
+      {""}, {""},
+      {"ASMO-708", ei_iso8859_6},
+      {""}, {""}, {""}, {""},
+      {"ISO-IR-87", ei_jisx0208},
+      {""},
+      {"LATIN3", ei_iso8859_3},
+      {""}, {""},
       {"CSUNICODE", ei_ucs2},
+      {"ISO-IR-179", ei_iso8859_13},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-1:1987", ei_iso8859_1},
+      {"CSASCII", ei_ascii},
+      {""},
+      {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", ei_euc_jp},
+      {""}, {""}, {""},
+      {"CSPC850MULTILINGUAL", ei_cp850},
+      {""}, {""}, {""}, {""},
+      {"ISO-IR-57", ei_iso646_cn},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"WINDOWS-1257", ei_cp1257},
+      {""},
+      {"GBK", ei_ces_gbk},
+      {"MULELAO-1", ei_mulelao},
+      {"GREEK", ei_iso8859_7},
+      {"WINDOWS-1253", ei_cp1253},
+      {"CYRILLIC", ei_iso8859_5},
+      {""},
+      {"CP932", ei_cp932},
+      {""}, {""},
+      {"MS-TURK", ei_cp1254},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-149", ei_ksc5601},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CSISO2022KR", ei_iso2022_kr},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+      {"ISO-8859-7", ei_iso8859_7},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"WINDOWS-1254", ei_cp1254},
+      {""},
+      {"JIS_X0201", ei_jisx0201},
+      {"ISO-8859-3", ei_iso8859_3},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"GB_1988-80", ei_iso646_cn},
+      {"LATIN4", ei_iso8859_4},
+      {""}, {""}, {""}, {""},
+      {"CP1251", ei_cp1251},
       {""}, {""}, {""}, {""}, {""},
-      {"WINDOWS-874", ei_cp874},
+      {"GEORGIAN-PS", ei_georgian_ps},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-203", ei_iso8859_15},
+      {""},
+      {"JIS_C6220-1969-RO", ei_iso646_jp},
+      {""}, {""},
+      {"ISO_8859-3:1988", ei_iso8859_3},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-10646-UCS-2", ei_ucs2},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"MS-GREEK", ei_cp1253},
       {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-6:1987", ei_iso8859_6},
+      {""}, {""}, {""},
+      {"JIS_X0212-1990", ei_jisx0212},
+      {"CP949", ei_cp949},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"MACTURKISH", ei_mac_turkish},
+      {""},
+      {"UTF-7", ei_utf7},
+      {""}, {""}, {""}, {""},
+      {"ISO_8859-4:1988", ei_iso8859_4},
+      {"JIS_X0212.1990-0", ei_jisx0212},
+      {""}, {""},
+      {"MS-ARAB", ei_cp1256},
+      {"ISO-8859-4", ei_iso8859_4},
+      {""}, {""}, {""}, {""}, {""}, {""},
       {"MACCENTRALEUROPE", ei_mac_centraleurope},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-2:1987", ei_iso8859_2},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"MS_KANJI", ei_sjis},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""},
+      {"UCS-4", ei_ucs4},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+      {"GB2312", ei_euc_cn},
+      {""}, {""}, {""}, {""}, {""},
+      {"CSISOLATIN1", ei_iso8859_1},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""},
+      {"ISO-IR-157", ei_iso8859_10},
+      {"ISO_8859-14:1998", ei_iso8859_14},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CSEUCKR", ei_euc_kr},
       {""}, {""},
       {"TIS620.2533-0", ei_tis620},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"CSISOLATIN4", ei_iso8859_4},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
-      {"JIS_X0208-1983", ei_jisx0208},
+      {"CSMACINTOSH", ei_mac_roman},
       {""}, {""}, {""},
-      {"TIS620.2533-1", ei_tis620},
+      {"VISCII1.1-1", ei_viscii},
+      {""}, {""}, {""}, {""},
+      {"ISO_646.IRV:1991", ei_ascii},
+      {""}, {""}, {""},
+      {"ISO-IR-127", ei_iso8859_6},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"UNICODE-1-1", ei_ucs2be},
-      {""}, {""}, {""}, {""}, {""},
-      {"CP1257", ei_cp1257},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MACCROATIAN", ei_mac_croatian},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"IBM367", ei_ascii},
-      {"TCVN5712-1:1993", ei_tcvn},
-      {""}, {""}, {""}, {""}, {""},
-      {"CP1253", ei_cp1253},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-8859-13", ei_iso8859_13},
       {""}, {""},
-      {"UCS-4-SWAPPED", ei_ucs4swapped},
+      {"JIS_X0208-1983", ei_jisx0208},
+      {""}, {""}, {""}, {""}, {""},
+      {"TCVN5712-1", ei_tcvn},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-14", ei_iso646_jp},
       {"CSISO58GB231280", ei_gb2312},
-      {""},
-      {"GB_2312-80", ei_gb2312},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MACROMANIA", ei_mac_romania},
+      {"UCS-4-SWAPPED", ei_ucs4swapped},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-      {"ISO_8859-7", ei_iso8859_7},
-      {""}, {""}, {""},
-      {"CSEUCPKDFMTJAPANESE", ei_euc_jp},
-      {""}, {""}, {""},
-      {"CSISO57GB1988", ei_iso646_cn},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"UNICODEBIG", ei_ucs2be},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-3", ei_iso8859_3},
-      {"CSGB2312", ei_euc_cn},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-1:1987", ei_iso8859_1},
       {""},
-      {"CYRILLIC", ei_iso8859_5},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
+      {"CSISO14JISC6220RO", ei_iso646_jp},
+      {""}, {""}, {""}, {""}, {""}, {""},
       {"CSISOLATINCYRILLIC", ei_iso8859_5},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""},
-      {"CSISOLATINARABIC", ei_iso8859_6},
-      {"ISO_8859-7:1987", ei_iso8859_7},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""},
+      {"UNICODE-1-1", ei_ucs2be},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"MACUKRAINE", ei_mac_ukraine},
+      {""},
+      {"MACCYRILLIC", ei_mac_cyrillic},
+      {""}, {""}, {""},
+      {"UNICODEBIG", ei_ucs2be},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""},
-      {"EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE", ei_euc_jp},
+      {"ISO_8859-7", ei_iso8859_7},
+      {"ISO-8859-14", ei_iso8859_14},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-3", ei_iso8859_3},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CSISOLATINGREEK", ei_iso8859_7},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ISO_8859-13", ei_iso8859_13},
-      {"CSKSC56011987", ei_ksc5601},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MS-ARAB", ei_cp1256},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"ANSI_X3.4-1968", ei_ascii},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"CP367", ei_ascii},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"CSPC850MULTILINGUAL", ei_cp850},
-      {""},
-      {"CSUNICODE11", ei_ucs2be},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""},
-      {"UNICODE-1-1-UTF-7", ei_utf7},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"MACGREEK", ei_mac_greek},
       {""}, {""}, {""},
+      {"TIS620.2533-1", ei_tis620},
+      {""},
+      {"HZ-GB-2312", ei_hz},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CSISOLATINARABIC", ei_iso8859_6},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"IBM367", ei_ascii},
+      {"CSEUCPKDFMTJAPANESE", ei_euc_jp},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CP1361", ei_johab},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+      {"ISO_8859-4", ei_iso8859_4},
+      {"MACICELAND", ei_mac_iceland},
+      {""},
       {"ARABIC", ei_iso8859_6},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""},
+      {"CP1257", ei_cp1257},
+      {""},
+      {"CSISO57GB1988", ei_iso646_cn},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CP1253", ei_cp1253},
       {""}, {""}, {""}, {""}, {""}, {""},
+      {"MACCROATIAN", ei_mac_croatian},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-10646-UCS-4", ei_ucs4},
+      {"KSC_5601", ei_ksc5601},
+      {""}, {""}, {""},
+      {"ISO_8859-7:1987", ei_iso8859_7},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"GB_2312-80", ei_gb2312},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"UNICODE-1-1-UTF-7", ei_utf7},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"CSGB2312", ei_euc_cn},
+      {""}, {""},
       {"CSHALFWIDTHKATAKANA", ei_jisx0201},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-13", ei_iso8859_13},
+      {""}, {""}, {""}, {""},
+      {"CP1254", ei_cp1254},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"CSUNICODE11", ei_ucs2be},
+      {""}, {""}, {""}, {""}, {""},
+      {"CSISOLATIN3", ei_iso8859_3},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"CP367", ei_ascii},
+      {"WINDOWS-874", ei_cp874},
+      {""}, {""}, {""},
+      {"TCVN5712-1:1993", ei_tcvn},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"MACROMANIA", ei_mac_romania},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO_8859-14", ei_iso8859_14},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+      {"CP874", ei_cp874},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"CSISOLATIN4", ei_iso8859_4},
+      {""}, {""}, {""},
+      {"CSUCS4", ei_ucs4},
+      {""}, {""}, {""}, {""}, {""}, {""},
+      {"GEORGIAN-ACADEMY", ei_georgian_academy},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ISO-IR-144", ei_iso8859_5},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"CSUNICODE11UTF7", ei_utf7},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"MACARABIC", ei_mac_arabic},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {"ECMA-114", ei_iso8859_6},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
@@ -681,16 +680,12 @@
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
-      {"MACCYRILLIC", ei_mac_cyrillic},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"CSISOLATIN3", ei_iso8859_3},
+      {"ANSI_X3.4-1968", ei_ascii},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""},
+      {"CSKSC56011987", ei_ksc5601},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
@@ -704,26 +699,23 @@
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"CSUNICODE11UTF7", ei_utf7},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""},
-      {"IBM-CP1133", ei_cp1133},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {"MACARABIC", ei_mac_arabic},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""},
-      {"MACICELAND", ei_mac_iceland},
+      {"IBM-CP1133", ei_cp1133},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
diff --git a/src/converters.h b/src/converters.h
index b836700..1c8f47b 100644
--- a/src/converters.h
+++ b/src/converters.h
@@ -99,6 +99,8 @@
 #include "ucs2.h"
 #include "ucs4.h"
 #include "utf16.h"
+#include "utf16be.h"
+#include "utf16le.h"
 #include "utf7.h"
 #include "ucs2internal.h"
 #include "ucs2swapped.h"
diff --git a/src/encodings.def b/src/encodings.def
index fa6b387..870a79f 100644
--- a/src/encodings.def
+++ b/src/encodings.def
@@ -73,11 +73,21 @@
             ucs4,
             { ucs4_mbtowc },              { ucs4_wctomb, NULL })
 
-DEFENCODING(( "UTF-16",
+DEFENCODING(( "UTF-16",                 /* RFC 2781 */
             ),
             utf16,
             { utf16_mbtowc },             { utf16_wctomb, NULL })
 
+DEFENCODING(( "UTF-16BE",               /* RFC 2781 */
+            ),
+            utf16be,
+            { utf16be_mbtowc },           { utf16be_wctomb, NULL })
+
+DEFENCODING(( "UTF-16LE",               /* RFC 2781 */
+            ),
+            utf16le,
+            { utf16le_mbtowc },           { utf16le_wctomb, NULL })
+
 DEFENCODING(( "UTF-7",                  /* IANA, RFC 2152 */
               "UNICODE-1-1-UTF-7",      /* IANA, RFC 1642 */
               "csUnicode11UTF7",        /* IANA */
diff --git a/src/flags.h b/src/flags.h
index 4740e9d..51af911 100644
--- a/src/flags.h
+++ b/src/flags.h
@@ -17,6 +17,8 @@
 #define ei_ucs2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
 #define ei_ucs4_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
 #define ei_utf16_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
+#define ei_utf16be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
+#define ei_utf16le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
 #define ei_utf7_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
 #define ei_ucs2internal_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
 #define ei_ucs2swapped_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
diff --git a/src/utf16.h b/src/utf16.h
index 872c155..5cb2169 100644
--- a/src/utf16.h
+++ b/src/utf16.h
@@ -2,8 +2,14 @@
  * UTF-16
  */
 
+/* Specification: RFC 2781 */
+
 /* Here we accept FFFE/FEFF marks as endianness indicators everywhere
-   in the stream, not just at the beginning. The default is big-endian. */
+   in the stream, not just at the beginning. (This is contrary to what
+   RFC 2781 section 3.2 specifies, but it allows concatenation of byte
+   sequences to work flawlessly, while disagreeing with the RFC behaviour
+   only for strings containing U+FEFF characters, which is quite rare.)
+   The default is big-endian. */
 /* The state is 0 if big-endian, 1 if little-endian. */
 static int
 utf16_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
@@ -38,16 +44,30 @@
   return RET_TOOFEW(count);
 }
 
-/* But we output UTF-16 in big-endian order, without byte-order mark. */
+/* We output UTF-16 in big-endian order, with byte-order mark.
+   See RFC 2781 section 3.3 for a rationale: Some document formats
+   mandate a BOM; the file concatenation issue is not so severe as
+   long as the above utf16_mbtowc function is used. */
+/* The state is 0 at the beginning, 1 after the BOM has been written. */
 static int
 utf16_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
 {
   if (wc != 0xfffe) {
+    int count = 0;
+    if (!conv->ostate) {
+      if (n >= 2) {
+        r[0] = 0xFE;
+        r[1] = 0xFF;
+        r += 2; n -= 2; count += 2;
+      } else
+        return RET_TOOSMALL;
+    }
     if (wc < 0x10000) {
       if (n >= 2) {
         r[0] = (unsigned char) (wc >> 8);
         r[1] = (unsigned char) wc;
-        return 2;
+        conv->ostate = 1;
+        return count+2;
       } else
         return RET_TOOSMALL;
     }
@@ -59,7 +79,8 @@
         r[1] = (unsigned char) wc1;
         r[2] = (unsigned char) (wc2 >> 8);
         r[3] = (unsigned char) wc2;
-        return 4;
+        conv->ostate = 1;
+        return count+4;
       } else
         return RET_TOOSMALL;
     }
diff --git a/src/utf16be.h b/src/utf16be.h
new file mode 100644
index 0000000..69c5604
--- /dev/null
+++ b/src/utf16be.h
@@ -0,0 +1,55 @@
+/*
+ * UTF-16BE
+ */
+
+/* Specification: RFC 2781 */
+
+static int
+utf16be_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+{
+  int count = 0;
+  if (n >= 2) {
+    wchar_t wc = (s[0] << 8) + s[1];
+    if (wc >= 0xd800 && wc < 0xdc00) {
+      if (n >= 4) {
+        wchar_t wc2 = (s[2] << 8) + s[3];
+        if (!(wc2 >= 0xdc00 && wc2 < 0xe000))
+          return RET_ILSEQ;
+        *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00);
+        return count+4;
+      }
+    } else if (wc >= 0xdc00 && wc < 0xe000) {
+      return RET_ILSEQ;
+    } else {
+      *pwc = wc;
+      return count+2;
+    }
+  }
+  return RET_TOOFEW(count);
+}
+
+static int
+utf16be_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+{
+  if (wc < 0x10000) {
+    if (n >= 2) {
+      r[0] = (unsigned char) (wc >> 8);
+      r[1] = (unsigned char) wc;
+      return 2;
+    } else
+      return RET_TOOSMALL;
+  }
+  else if (wc < 0x110000) {
+    if (n >= 4) {
+      wchar_t wc1 = 0xd800 + ((wc - 0x10000) >> 10);
+      wchar_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff);
+      r[0] = (unsigned char) (wc1 >> 8);
+      r[1] = (unsigned char) wc1;
+      r[2] = (unsigned char) (wc2 >> 8);
+      r[3] = (unsigned char) wc2;
+      return 4;
+    } else
+      return RET_TOOSMALL;
+  }
+  return RET_ILSEQ;
+}
diff --git a/src/utf16le.h b/src/utf16le.h
new file mode 100644
index 0000000..ad54f59
--- /dev/null
+++ b/src/utf16le.h
@@ -0,0 +1,55 @@
+/*
+ * UTF-16LE
+ */
+
+/* Specification: RFC 2781 */
+
+static int
+utf16le_mbtowc (conv_t conv, wchar_t *pwc, const unsigned char *s, int n)
+{
+  int count = 0;
+  if (n >= 2) {
+    wchar_t wc = s[0] + (s[1] << 8);
+    if (wc >= 0xd800 && wc < 0xdc00) {
+      if (n >= 4) {
+        wchar_t wc2 = s[2] + (s[3] << 8);
+        if (!(wc2 >= 0xdc00 && wc2 < 0xe000))
+          return RET_ILSEQ;
+        *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00);
+        return count+4;
+      }
+    } else if (wc >= 0xdc00 && wc < 0xe000) {
+      return RET_ILSEQ;
+    } else {
+      *pwc = wc;
+      return count+2;
+    }
+  }
+  return RET_TOOFEW(count);
+}
+
+static int
+utf16le_wctomb (conv_t conv, unsigned char *r, wchar_t wc, int n)
+{
+  if (wc < 0x10000) {
+    if (n >= 2) {
+      r[0] = (unsigned char) wc;
+      r[1] = (unsigned char) (wc >> 8);
+      return 2;
+    } else
+      return RET_TOOSMALL;
+  }
+  else if (wc < 0x110000) {
+    if (n >= 4) {
+      wchar_t wc1 = 0xd800 + ((wc - 0x10000) >> 10);
+      wchar_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff);
+      r[0] = (unsigned char) wc1;
+      r[1] = (unsigned char) (wc1 >> 8);
+      r[2] = (unsigned char) wc2;
+      r[3] = (unsigned char) (wc2 >> 8);
+      return 4;
+    } else
+      return RET_TOOSMALL;
+  }
+  return RET_ILSEQ;
+}
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 52cf16d..b21e99f 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -35,6 +35,9 @@
 	$(srcdir)/check-stateless . UTF-8 && \
 	$(RM) genutf8 UTF-8.TXT
 	$(srcdir)/check-stateful $(srcdir) UTF-7
+	$(srcdir)/check-stateful $(srcdir) UTF-16
+	$(srcdir)/check-stateful $(srcdir) UTF-16BE
+	$(srcdir)/check-stateful $(srcdir) UTF-16LE
 #	/* 8-bit encodings */
 	$(srcdir)/check-stateless $(srcdir) ISO-8859-1
 	$(srcdir)/check-stateless $(srcdir) ISO-8859-2
diff --git a/tests/UTF-16-snippet b/tests/UTF-16-snippet
new file mode 100644
index 0000000..eef612d
--- /dev/null
+++ b/tests/UTF-16-snippet
Binary files differ
diff --git a/tests/UTF-16-snippet.UTF-8 b/tests/UTF-16-snippet.UTF-8
new file mode 100644
index 0000000..d28ea2e
--- /dev/null
+++ b/tests/UTF-16-snippet.UTF-8
@@ -0,0 +1 @@
+𒍅=Ra
\ No newline at end of file
diff --git a/tests/UTF-16BE-snippet b/tests/UTF-16BE-snippet
new file mode 100644
index 0000000..1cc84d0
--- /dev/null
+++ b/tests/UTF-16BE-snippet
Binary files differ
diff --git a/tests/UTF-16BE-snippet.UTF-8 b/tests/UTF-16BE-snippet.UTF-8
new file mode 100644
index 0000000..d28ea2e
--- /dev/null
+++ b/tests/UTF-16BE-snippet.UTF-8
@@ -0,0 +1 @@
+𒍅=Ra
\ No newline at end of file
diff --git a/tests/UTF-16LE-snippet b/tests/UTF-16LE-snippet
new file mode 100644
index 0000000..a4cba3c
--- /dev/null
+++ b/tests/UTF-16LE-snippet
Binary files differ
diff --git a/tests/UTF-16LE-snippet.UTF-8 b/tests/UTF-16LE-snippet.UTF-8
new file mode 100644
index 0000000..d28ea2e
--- /dev/null
+++ b/tests/UTF-16LE-snippet.UTF-8
@@ -0,0 +1 @@
+𒍅=Ra
\ No newline at end of file