1 /* charsets.c -- character set information and mappings
2 
3   (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
4   See tidyp.h for the copyright notice.
5 
6 */
7 
8 #include "forward.h"
9 #include "tidyp.h"
10 #include "tmbstr.h"
11 #include "charsets.h"
12 
13 /* todo: documentation of table and data       */
14 /* todo: integration of data and routines      */
15 /* todo: minor cleanup for ambiguous relations */
16 static struct _charsetInfo
17 {
18     uint id;
19     ctmbstr charset;
20     uint codepage;
21     uint stateful;
22 } const charsetInfo[] =
23 {
24   {   1, "adobe-standard-encoding",                           0,  no }, /* IANA */
25   {   1, "csadobestandardencoding",                           0,  no }, /* IANA */
26   {   2, "adobe-symbol-encoding",                             0,  no }, /* IANA */
27   {   2, "cshppsmath",                                        0,  no }, /* IANA */
28   {   3, "iso-ir-99",                                         0,  no }, /* IANA */
29   {   3, "ansi_x3.110-1983",                                  0,  no }, /* IANA */
30   {   3, "csa_t500-1983",                                     0,  no }, /* IANA */
31   {   3, "naplps",                                            0,  no }, /* IANA */
32   {   3, "csiso99naplps",                                     0,  no }, /* IANA */
33   {   4, "us-ascii",                                      20127,  no }, /* IANA */
34   {   4, "iso-ir-6",                                      20127,  no }, /* IANA */
35   {   4, "ansi_x3.4-1968",                                20127,  no }, /* IANA */
36   {   4, "ansi_x3.4-1986",                                20127,  no }, /* IANA */
37   {   4, "iso_646.irv:1991",                              20127,  no }, /* IANA */
38   {   4, "ascii",                                         20127,  no }, /* IANA */
39   {   4, "iso646-us",                                     20127,  no }, /* IANA */
40   {   4, "us",                                            20127,  no }, /* IANA */
41   {   4, "ibm367",                                        20127,  no }, /* IANA */
42   {   4, "cp367",                                         20127,  no }, /* IANA */
43   {   4, "csascii",                                       20127,  no }, /* IANA */
44   {   4, "iso-ir-6us",                                    20127,  no }, /* MICROSOFT */
45   {   5, "iso-ir-89",                                         0,  no }, /* IANA */
46   {   5, "asmo_449",                                          0,  no }, /* IANA */
47   {   5, "iso_9036",                                          0,  no }, /* IANA */
48   {   5, "arabic7",                                           0,  no }, /* IANA */
49   {   5, "csiso89asmo449",                                    0,  no }, /* IANA */
50   {   6, "big5",                                            950,  no }, /* IANA */
51   {   6, "csbig5",                                          950,  no }, /* IANA */
52   {   6, "cn-big5",                                         950,  no }, /* MICROSOFT */
53   {   6, "x-x-big5",                                        950,  no }, /* MICROSOFT */
54   {   7, "big5-hkscs",                                      950,  no }, /* IANA */
55   {   7, "cn-big5",                                         950,  no }, /* MICROSOFT */
56   {   7, "x-x-big5",                                        950,  no }, /* MICROSOFT */
57   {   8, "bocu-1",                                            0,  no }, /* IANA */
58   {   8, "csbocu-1",                                          0,  no }, /* IANA */
59   {   9, "iso-ir-4",                                          0,  no }, /* IANA */
60   {   9, "bs_4730",                                           0,  no }, /* IANA */
61   {   9, "iso646-gb",                                         0,  no }, /* IANA */
62   {   9, "gb",                                                0,  no }, /* IANA */
63   {   9, "uk",                                                0,  no }, /* IANA */
64   {   9, "csiso4unitedkingdom",                               0,  no }, /* IANA */
65   {  10, "iso-ir-47",                                         0,  no }, /* IANA */
66   {  10, "bs_viewdata",                                       0,  no }, /* IANA */
67   {  10, "csiso47bsviewdata",                                 0,  no }, /* IANA */
68   {  11, "cesu-8",                                            0,  no }, /* IANA */
69   {  11, "cscesu-8",                                          0,  no }, /* IANA */
70   {  12, "iso-ir-121",                                        0,  no }, /* IANA */
71   {  12, "csa_z243.4-1985-1",                                 0,  no }, /* IANA */
72   {  12, "iso646-ca",                                         0,  no }, /* IANA */
73   {  12, "csa7-1",                                            0,  no }, /* IANA */
74   {  12, "ca",                                                0,  no }, /* IANA */
75   {  12, "csiso121canadian1",                                 0,  no }, /* IANA */
76   {  13, "iso-ir-122",                                        0,  no }, /* IANA */
77   {  13, "csa_z243.4-1985-2",                                 0,  no }, /* IANA */
78   {  13, "iso646-ca2",                                        0,  no }, /* IANA */
79   {  13, "csa7-2",                                            0,  no }, /* IANA */
80   {  13, "csiso122canadian2",                                 0,  no }, /* IANA */
81   {  14, "iso-ir-123",                                        0,  no }, /* IANA */
82   {  14, "csa_z243.4-1985-gr",                                0,  no }, /* IANA */
83   {  14, "csiso123csaz24341985gr",                            0,  no }, /* IANA */
84   {  15, "iso-ir-139",                                        0,  no }, /* IANA */
85   {  15, "csn_369103",                                        0,  no }, /* IANA */
86   {  15, "csiso139csn369103",                                 0,  no }, /* IANA */
87   {  16, "dec-mcs",                                           0,  no }, /* IANA */
88   {  16, "dec",                                               0,  no }, /* IANA */
89   {  16, "csdecmcs",                                          0,  no }, /* IANA */
90   {  17, "iso-ir-21",                                     20106,  no }, /* IANA */
91   {  17, "din_66003",                                     20106,  no }, /* IANA */
92   {  17, "de",                                            20106,  no }, /* IANA */
93   {  17, "iso646-de",                                     20106,  no }, /* IANA */
94   {  17, "csiso21german",                                 20106,  no }, /* IANA */
95   {  17, "x-ia5-german",                                  20106,  no }, /* MICROSOFT */
96   {  18, "dk-us",                                             0,  no }, /* IANA */
97   {  18, "csdkus",                                            0,  no }, /* IANA */
98   {  19, "ds_2089",                                           0,  no }, /* IANA */
99   {  19, "ds2089",                                            0,  no }, /* IANA */
100   {  19, "iso646-dk",                                         0,  no }, /* IANA */
101   {  19, "dk",                                                0,  no }, /* IANA */
102   {  19, "csiso646danish",                                    0,  no }, /* IANA */
103   {  20, "ebcdic-at-de",                                      0,  no }, /* IANA */
104   {  20, "csibmebcdicatde",                                   0,  no }, /* IANA */
105   {  21, "ebcdic-at-de-a",                                    0,  no }, /* IANA */
106   {  21, "csebcdicatdea",                                     0,  no }, /* IANA */
107   {  22, "ebcdic-ca-fr",                                      0,  no }, /* IANA */
108   {  22, "csebcdiccafr",                                      0,  no }, /* IANA */
109   {  23, "ebcdic-dk-no",                                      0,  no }, /* IANA */
110   {  23, "csebcdicdkno",                                      0,  no }, /* IANA */
111   {  24, "ebcdic-dk-no-a",                                    0,  no }, /* IANA */
112   {  24, "csebcdicdknoa",                                     0,  no }, /* IANA */
113   {  25, "ebcdic-es",                                         0,  no }, /* IANA */
114   {  25, "csebcdices",                                        0,  no }, /* IANA */
115   {  26, "ebcdic-es-a",                                       0,  no }, /* IANA */
116   {  26, "csebcdicesa",                                       0,  no }, /* IANA */
117   {  27, "ebcdic-es-s",                                       0,  no }, /* IANA */
118   {  27, "csebcdicess",                                       0,  no }, /* IANA */
119   {  28, "ebcdic-fi-se",                                      0,  no }, /* IANA */
120   {  28, "csebcdicfise",                                      0,  no }, /* IANA */
121   {  29, "ebcdic-fi-se-a",                                    0,  no }, /* IANA */
122   {  29, "csebcdicfisea",                                     0,  no }, /* IANA */
123   {  30, "ebcdic-fr",                                         0,  no }, /* IANA */
124   {  30, "csebcdicfr",                                        0,  no }, /* IANA */
125   {  31, "ebcdic-it",                                         0,  no }, /* IANA */
126   {  31, "csebcdicit",                                        0,  no }, /* IANA */
127   {  32, "ebcdic-pt",                                         0,  no }, /* IANA */
128   {  32, "csebcdicpt",                                        0,  no }, /* IANA */
129   {  33, "ebcdic-uk",                                         0,  no }, /* IANA */
130   {  33, "csebcdicuk",                                        0,  no }, /* IANA */
131   {  34, "ebcdic-us",                                         0,  no }, /* IANA */
132   {  34, "csebcdicus",                                        0,  no }, /* IANA */
133   {  35, "iso-ir-111",                                        0,  no }, /* IANA */
134   {  35, "ecma-cyrillic",                                     0,  no }, /* IANA */
135   {  35, "csiso111ecmacyrillic",                              0,  no }, /* IANA */
136   {  36, "iso-ir-17",                                         0,  no }, /* IANA */
137   {  36, "es",                                                0,  no }, /* IANA */
138   {  36, "iso646-es",                                         0,  no }, /* IANA */
139   {  36, "csiso17spanish",                                    0,  no }, /* IANA */
140   {  37, "iso-ir-85",                                         0,  no }, /* IANA */
141   {  37, "es2",                                               0,  no }, /* IANA */
142   {  37, "iso646-es2",                                        0,  no }, /* IANA */
143   {  37, "csiso85spanish2",                                   0,  no }, /* IANA */
144   {  38, "euc-kr",                                        51949,  no }, /* IANA */
145   {  38, "cseuckr",                                       51949,  no }, /* IANA */
146   {  39, "extended_unix_code_fixed_width_for_japanese",       0,  no }, /* IANA */
147   {  39, "cseucfixwidjapanese",                               0,  no }, /* IANA */
148   {  40, "euc-jp",                                        51932,  no }, /* IANA */
149   {  40, "extended_unix_code_packed_format_for_japanese", 51932,  no }, /* IANA */
150   {  40, "cseucpkdfmtjapanese",                           51932,  no }, /* IANA */
151   {  40, "x-euc-jp",                                      51932,  no }, /* MICROSOFT */
152   {  40, "x-euc",                                         51932,  no }, /* MICROSOFT */
153   {  41, "gb18030",                                       54936,  no }, /* IANA */
154   {  42, "gb2312",                                          936,  no }, /* IANA */
155   {  42, "csgb2312",                                        936,  no }, /* IANA */
156   {  42, "csgb231280",                                      936,  no }, /* MICROSOFT */
157   {  42, "gb2312-80",                                       936,  no }, /* MICROSOFT */
158   {  42, "gb231280",                                        936,  no }, /* MICROSOFT */
159   {  42, "cn-gb",                                           936,  no }, /* MICROSOFT */
160   {  43, "iso-ir-57",                                         0,  no }, /* IANA */
161   {  43, "gb_1988-80",                                        0,  no }, /* IANA */
162   {  43, "cn",                                                0,  no }, /* IANA */
163   {  43, "iso646-cn",                                         0,  no }, /* IANA */
164   {  43, "csiso57gb1988",                                     0,  no }, /* IANA */
165   {  44, "iso-ir-58",                                       936,  no }, /* IANA */
166   {  44, "gb_2312-80",                                      936,  no }, /* IANA */
167   {  44, "chinese",                                         936,  no }, /* IANA */
168   {  44, "csiso58gb231280",                                 936,  no }, /* IANA */
169   {  44, "csgb231280",                                      936,  no }, /* MICROSOFT */
170   {  44, "gb2312-80",                                       936,  no }, /* MICROSOFT */
171   {  44, "gb231280",                                        936,  no }, /* MICROSOFT */
172   {  44, "cn-gb",                                           936,  no }, /* MICROSOFT */
173   {  45, "gbk",                                             936,  no }, /* IANA */
174   {  45, "cp936",                                           936,  no }, /* IANA */
175   {  45, "ms936",                                           936,  no }, /* IANA */
176   {  45, "windows-936",                                     936,  no }, /* IANA */
177   {  45, "csgb231280",                                      936,  no }, /* MICROSOFT */
178   {  45, "gb2312-80",                                       936,  no }, /* MICROSOFT */
179   {  45, "gb231280",                                        936,  no }, /* MICROSOFT */
180   {  45, "cn-gb",                                           936,  no }, /* MICROSOFT */
181   {  46, "iso-ir-153",                                        0,  no }, /* IANA */
182   {  46, "gost_19768-74",                                     0,  no }, /* IANA */
183   {  46, "st_sev_358-88",                                     0,  no }, /* IANA */
184   {  46, "csiso153gost1976874",                               0,  no }, /* IANA */
185   {  47, "iso-ir-150",                                        0,  no }, /* IANA */
186   {  47, "greek-ccitt",                                       0,  no }, /* IANA */
187   {  47, "csiso150",                                          0,  no }, /* IANA */
188   {  47, "csiso150greekccitt",                                0,  no }, /* IANA */
189   {  48, "iso-ir-88",                                         0,  no }, /* IANA */
190   {  48, "greek7",                                            0,  no }, /* IANA */
191   {  48, "csiso88greek7",                                     0,  no }, /* IANA */
192   {  49, "iso-ir-18",                                         0,  no }, /* IANA */
193   {  49, "greek7-old",                                        0,  no }, /* IANA */
194   {  49, "csiso18greek7old",                                  0,  no }, /* IANA */
195   {  50, "hp-desktop",                                        0,  no }, /* IANA */
196   {  50, "cshpdesktop",                                       0,  no }, /* IANA */
197   {  51, "hp-legal",                                          0,  no }, /* IANA */
198   {  51, "cshplegal",                                         0,  no }, /* IANA */
199   {  52, "hp-math8",                                          0,  no }, /* IANA */
200   {  52, "cshpmath8",                                         0,  no }, /* IANA */
201   {  53, "hp-pi-font",                                        0,  no }, /* IANA */
202   {  53, "cshppifont",                                        0,  no }, /* IANA */
203   {  54, "hp-roman8",                                         0,  no }, /* IANA */
204   {  54, "roman8",                                            0,  no }, /* IANA */
205   {  54, "r8",                                                0,  no }, /* IANA */
206   {  54, "cshproman8",                                        0,  no }, /* IANA */
207   {  55, "hz-gb-2312",                                    52936, yes }, /* IANA */
208   {  56, "ibm-symbols",                                       0,  no }, /* IANA */
209   {  56, "csibmsymbols",                                      0,  no }, /* IANA */
210   {  57, "ibm-thai",                                      20838,  no }, /* IANA */
211   {  57, "csibmthai",                                     20838,  no }, /* IANA */
212   {  57, "x-ebcdic-thai",                                 20838,  no }, /* MICROSOFT */
213   {  58, "ibm00858",                                        858,  no }, /* IANA */
214   {  58, "ccsid00858",                                      858,  no }, /* IANA */
215   {  58, "cp00858",                                         858,  no }, /* IANA */
216   {  58, "pc-multilingual-850+euro",                        858,  no }, /* IANA */
217   {  59, "ibm00924",                                      20924,  no }, /* IANA */
218   {  59, "ccsid00924",                                    20924,  no }, /* IANA */
219   {  59, "cp00924",                                       20924,  no }, /* IANA */
220   {  59, "ebcdic-latin9--euro",                           20924,  no }, /* IANA */
221   {  60, "ibm01140",                                       1140,  no }, /* IANA */
222   {  60, "ccsid01140",                                     1140,  no }, /* IANA */
223   {  60, "cp01140",                                        1140,  no }, /* IANA */
224   {  60, "ebcdic-us-37+euro",                              1140,  no }, /* IANA */
225   {  60, "x-ebcdic-cp-us-euro",                            1140,  no }, /* MICROSOFT */
226   {  61, "ibm01141",                                       1141,  no }, /* IANA */
227   {  61, "ccsid01141",                                     1141,  no }, /* IANA */
228   {  61, "cp01141",                                        1141,  no }, /* IANA */
229   {  61, "ebcdic-de-273+euro",                             1141,  no }, /* IANA */
230   {  61, "x-ebcdic-germany-euro",                          1141,  no }, /* MICROSOFT */
231   {  62, "ibm01142",                                       1142,  no }, /* IANA */
232   {  62, "ccsid01142",                                     1142,  no }, /* IANA */
233   {  62, "cp01142",                                        1142,  no }, /* IANA */
234   {  62, "ebcdic-dk-277+euro",                             1142,  no }, /* IANA */
235   {  62, "ebcdic-no-277+euro",                             1142,  no }, /* IANA */
236   {  62, "x-ebcdic-denmarknorway-euro",                    1142,  no }, /* MICROSOFT */
237   {  63, "ibm01143",                                       1143,  no }, /* IANA */
238   {  63, "ccsid01143",                                     1143,  no }, /* IANA */
239   {  63, "cp01143",                                        1143,  no }, /* IANA */
240   {  63, "ebcdic-fi-278+euro",                             1143,  no }, /* IANA */
241   {  63, "ebcdic-se-278+euro",                             1143,  no }, /* IANA */
242   {  63, "x-ebcdic-france",                                1143,  no }, /* MICROSOFT */
243   {  63, "x-ebcdic-finlandsweden-euro",                    1143,  no }, /* MICROSOFT */
244   {  64, "ibm01144",                                       1144,  no }, /* IANA */
245   {  64, "ccsid01144",                                     1144,  no }, /* IANA */
246   {  64, "cp01144",                                        1144,  no }, /* IANA */
247   {  64, "ebcdic-it-280+euro",                             1144,  no }, /* IANA */
248   {  64, "x-ebcdic-italy-euro",                            1144,  no }, /* MICROSOFT */
249   {  65, "ibm01145",                                       1145,  no }, /* IANA */
250   {  65, "ccsid01145",                                     1145,  no }, /* IANA */
251   {  65, "cp01145",                                        1145,  no }, /* IANA */
252   {  65, "ebcdic-es-284+euro",                             1145,  no }, /* IANA */
253   {  65, "x-ebcdic-spain-euro",                            1145,  no }, /* MICROSOFT */
254   {  66, "ibm01146",                                       1146,  no }, /* IANA */
255   {  66, "ccsid01146",                                     1146,  no }, /* IANA */
256   {  66, "cp01146",                                        1146,  no }, /* IANA */
257   {  66, "ebcdic-gb-285+euro",                             1146,  no }, /* IANA */
258   {  66, "x-ebcdic-uk-euro",                               1146,  no }, /* MICROSOFT */
259   {  67, "ibm01147",                                       1147,  no }, /* IANA */
260   {  67, "ccsid01147",                                     1147,  no }, /* IANA */
261   {  67, "cp01147",                                        1147,  no }, /* IANA */
262   {  67, "ebcdic-fr-297+euro",                             1147,  no }, /* IANA */
263   {  67, "x-ebcdic-france-euro",                           1147,  no }, /* MICROSOFT */
264   {  68, "ibm01148",                                       1148,  no }, /* IANA */
265   {  68, "ccsid01148",                                     1148,  no }, /* IANA */
266   {  68, "cp01148",                                        1148,  no }, /* IANA */
267   {  68, "ebcdic-international-500+euro",                  1148,  no }, /* IANA */
268   {  68, "x-ebcdic-international-euro",                    1148,  no }, /* MICROSOFT */
269   {  69, "ibm01149",                                       1149,  no }, /* IANA */
270   {  69, "ccsid01149",                                     1149,  no }, /* IANA */
271   {  69, "cp01149",                                        1149,  no }, /* IANA */
272   {  69, "ebcdic-is-871+euro",                             1149,  no }, /* IANA */
273   {  69, "x-ebcdic-icelandic-euro",                        1149,  no }, /* MICROSOFT */
274   {  70, "ibm037",                                           37,  no }, /* IANA */
275   {  70, "cp037",                                            37,  no }, /* IANA */
276   {  70, "ebcdic-cp-us",                                     37,  no }, /* IANA */
277   {  70, "ebcdic-cp-ca",                                     37,  no }, /* IANA */
278   {  70, "ebcdic-cp-wt",                                     37,  no }, /* IANA */
279   {  70, "ebcdic-cp-nl",                                     37,  no }, /* IANA */
280   {  70, "csibm037",                                         37,  no }, /* IANA */
281   {  71, "ibm038",                                            0,  no }, /* IANA */
282   {  71, "ebcdic-int",                                        0,  no }, /* IANA */
283   {  71, "cp038",                                             0,  no }, /* IANA */
284   {  71, "csibm038",                                          0,  no }, /* IANA */
285   {  72, "ibm1026",                                        1026,  no }, /* IANA */
286   {  72, "cp1026",                                         1026,  no }, /* IANA */
287   {  72, "csibm1026",                                      1026,  no }, /* IANA */
288   {  73, "ibm1047",                                           0,  no }, /* IANA */
289   {  73, "ibm-1047",                                          0,  no }, /* IANA */
290   {  74, "ibm273",                                        20273,  no }, /* IANA */
291   {  74, "cp273",                                         20273,  no }, /* IANA */
292   {  74, "csibm273",                                      20273,  no }, /* IANA */
293   {  74, "x-ebcdic-germany",                              20273,  no }, /* MICROSOFT */
294   {  75, "ibm274",                                            0,  no }, /* IANA */
295   {  75, "ebcdic-be",                                         0,  no }, /* IANA */
296   {  75, "cp274",                                             0,  no }, /* IANA */
297   {  75, "csibm274",                                          0,  no }, /* IANA */
298   {  76, "ibm275",                                            0,  no }, /* IANA */
299   {  76, "ebcdic-br",                                         0,  no }, /* IANA */
300   {  76, "cp275",                                             0,  no }, /* IANA */
301   {  76, "csibm275",                                          0,  no }, /* IANA */
302   {  77, "ibm277",                                        20277,  no }, /* IANA */
303   {  77, "ebcdic-cp-dk",                                  20277,  no }, /* IANA */
304   {  77, "ebcdic-cp-no",                                  20277,  no }, /* IANA */
305   {  77, "csibm277",                                      20277,  no }, /* IANA */
306   {  77, "x-ebcdic-denmarknorway",                        20277,  no }, /* MICROSOFT */
307   {  78, "ibm278",                                        20278,  no }, /* IANA */
308   {  78, "cp278",                                         20278,  no }, /* IANA */
309   {  78, "ebcdic-cp-fi",                                  20278,  no }, /* IANA */
310   {  78, "ebcdic-cp-se",                                  20278,  no }, /* IANA */
311   {  78, "csibm278",                                      20278,  no }, /* IANA */
312   {  78, "x-ebcdic-finlandsweden",                        20278,  no }, /* MICROSOFT */
313   {  79, "ibm280",                                        20280,  no }, /* IANA */
314   {  79, "cp280",                                         20280,  no }, /* IANA */
315   {  79, "ebcdic-cp-it",                                  20280,  no }, /* IANA */
316   {  79, "csibm280",                                      20280,  no }, /* IANA */
317   {  79, "x-ebcdic-italy",                                20280,  no }, /* MICROSOFT */
318   {  80, "ibm281",                                            0,  no }, /* IANA */
319   {  80, "ebcdic-jp-e",                                       0,  no }, /* IANA */
320   {  80, "cp281",                                             0,  no }, /* IANA */
321   {  80, "csibm281",                                          0,  no }, /* IANA */
322   {  81, "ibm284",                                        20284,  no }, /* IANA */
323   {  81, "cp284",                                         20284,  no }, /* IANA */
324   {  81, "ebcdic-cp-es",                                  20284,  no }, /* IANA */
325   {  81, "csibm284",                                      20284,  no }, /* IANA */
326   {  81, "x-ebcdic-spain",                                20284,  no }, /* MICROSOFT */
327   {  82, "ibm285",                                        20285,  no }, /* IANA */
328   {  82, "cp285",                                         20285,  no }, /* IANA */
329   {  82, "ebcdic-cp-gb",                                  20285,  no }, /* IANA */
330   {  82, "csibm285",                                      20285,  no }, /* IANA */
331   {  82, "x-ebcdic-uk",                                   20285,  no }, /* MICROSOFT */
332   {  83, "ibm290",                                        20290,  no }, /* IANA */
333   {  83, "cp290",                                         20290,  no }, /* IANA */
334   {  83, "ebcdic-jp-kana",                                20290,  no }, /* IANA */
335   {  83, "csibm290",                                      20290,  no }, /* IANA */
336   {  83, "x-ebcdic-japanesekatakana",                     20290,  no }, /* MICROSOFT */
337   {  84, "ibm297",                                        20297,  no }, /* IANA */
338   {  84, "cp297",                                         20297,  no }, /* IANA */
339   {  84, "ebcdic-cp-fr",                                  20297,  no }, /* IANA */
340   {  84, "csibm297",                                      20297,  no }, /* IANA */
341   {  85, "ibm420",                                        20420,  no }, /* IANA */
342   {  85, "cp420",                                         20420,  no }, /* IANA */
343   {  85, "ebcdic-cp-ar1",                                 20420,  no }, /* IANA */
344   {  85, "csibm420",                                      20420,  no }, /* IANA */
345   {  85, "x-ebcdic-arabic",                               20420,  no }, /* MICROSOFT */
346   {  86, "ibm423",                                        20423,  no }, /* IANA */
347   {  86, "cp423",                                         20423,  no }, /* IANA */
348   {  86, "ebcdic-cp-gr",                                  20423,  no }, /* IANA */
349   {  86, "csibm423",                                      20423,  no }, /* IANA */
350   {  86, "x-ebcdic-greek",                                20423,  no }, /* MICROSOFT */
351   {  87, "ibm424",                                        20424,  no }, /* IANA */
352   {  87, "cp424",                                         20424,  no }, /* IANA */
353   {  87, "ebcdic-cp-he",                                  20424,  no }, /* IANA */
354   {  87, "csibm424",                                      20424,  no }, /* IANA */
355   {  87, "x-ebcdic-hebrew",                               20424,  no }, /* MICROSOFT */
356   {  88, "ibm437",                                          437,  no }, /* IANA */
357   {  88, "cp437",                                           437,  no }, /* IANA */
358   {  88, "437",                                             437,  no }, /* IANA */
359   {  88, "cspc8codepage437",                                437,  no }, /* IANA */
360   {  88, "codepage437",                                     437,  no }, /* MICROSOFT */
361   {  88, "cspc8",                                           437,  no }, /* MICROSOFT */
362   {  89, "ibm500",                                          500,  no }, /* IANA */
363   {  89, "cp500",                                           500,  no }, /* IANA */
364   {  89, "ebcdic-cp-be",                                    500,  no }, /* IANA */
365   {  89, "ebcdic-cp-ch",                                    500,  no }, /* IANA */
366   {  89, "csibm500",                                        500,  no }, /* IANA */
367   {  90, "ibm775",                                          775,  no }, /* IANA */
368   {  90, "cp775",                                           775,  no }, /* IANA */
369   {  90, "cspc775baltic",                                   775,  no }, /* IANA */
370   {  91, "ibm850",                                          850,  no }, /* IANA */
371   {  91, "cp850",                                           850,  no }, /* IANA */
372   {  91, "850",                                             850,  no }, /* IANA */
373   {  91, "cspc850multilingual",                             850,  no }, /* IANA */
374   {  92, "ibm851",                                            0,  no }, /* IANA */
375   {  92, "cp851",                                             0,  no }, /* IANA */
376   {  92, "851",                                               0,  no }, /* IANA */
377   {  92, "csibm851",                                          0,  no }, /* IANA */
378   {  93, "ibm852",                                          852,  no }, /* IANA */
379   {  93, "cp852",                                           852,  no }, /* IANA */
380   {  93, "852",                                             852,  no }, /* IANA */
381   {  93, "cspcp852",                                        852,  no }, /* IANA */
382   {  94, "ibm855",                                          855,  no }, /* IANA */
383   {  94, "cp855",                                           855,  no }, /* IANA */
384   {  94, "855",                                             855,  no }, /* IANA */
385   {  94, "csibm855",                                        855,  no }, /* IANA */
386   {  95, "ibm857",                                          857,  no }, /* IANA */
387   {  95, "cp857",                                           857,  no }, /* IANA */
388   {  95, "857",                                             857,  no }, /* IANA */
389   {  95, "csibm857",                                        857,  no }, /* IANA */
390   {  96, "ibm860",                                          860,  no }, /* IANA */
391   {  96, "cp860",                                           860,  no }, /* IANA */
392   {  96, "860",                                             860,  no }, /* IANA */
393   {  96, "csibm860",                                        860,  no }, /* IANA */
394   {  97, "ibm861",                                          861,  no }, /* IANA */
395   {  97, "cp861",                                           861,  no }, /* IANA */
396   {  97, "861",                                             861,  no }, /* IANA */
397   {  97, "cp-is",                                           861,  no }, /* IANA */
398   {  97, "csibm861",                                        861,  no }, /* IANA */
399   {  98, "ibm862",                                          862,  no }, /* IANA */
400   {  98, "cp862",                                           862,  no }, /* IANA */
401   {  98, "862",                                             862,  no }, /* IANA */
402   {  98, "cspc862latinhebrew",                              862,  no }, /* IANA */
403   {  98, "dos-862",                                         862,  no }, /* MICROSOFT */
404   {  99, "ibm863",                                          863,  no }, /* IANA */
405   {  99, "cp863",                                           863,  no }, /* IANA */
406   {  99, "863",                                             863,  no }, /* IANA */
407   {  99, "csibm863",                                        863,  no }, /* IANA */
408   { 100, "ibm864",                                          864,  no }, /* IANA */
409   { 100, "cp864",                                           864,  no }, /* IANA */
410   { 100, "csibm864",                                        864,  no }, /* IANA */
411   { 101, "ibm865",                                          865,  no }, /* IANA */
412   { 101, "cp865",                                           865,  no }, /* IANA */
413   { 101, "865",                                             865,  no }, /* IANA */
414   { 101, "csibm865",                                        865,  no }, /* IANA */
415   { 102, "ibm866",                                          866,  no }, /* IANA */
416   { 102, "cp866",                                           866,  no }, /* IANA */
417   { 102, "866",                                             866,  no }, /* IANA */
418   { 102, "csibm866",                                        866,  no }, /* IANA */
419   { 103, "ibm868",                                            0,  no }, /* IANA */
420   { 103, "cp868",                                             0,  no }, /* IANA */
421   { 103, "cp-ar",                                             0,  no }, /* IANA */
422   { 103, "csibm868",                                          0,  no }, /* IANA */
423   { 104, "ibm869",                                          869,  no }, /* IANA */
424   { 104, "cp869",                                           869,  no }, /* IANA */
425   { 104, "869",                                             869,  no }, /* IANA */
426   { 104, "cp-gr",                                           869,  no }, /* IANA */
427   { 104, "csibm869",                                        869,  no }, /* IANA */
428   { 105, "ibm870",                                          870,  no }, /* IANA */
429   { 105, "cp870",                                           870,  no }, /* IANA */
430   { 105, "ebcdic-cp-roece",                                 870,  no }, /* IANA */
431   { 105, "ebcdic-cp-yu",                                    870,  no }, /* IANA */
432   { 105, "csibm870",                                        870,  no }, /* IANA */
433   { 106, "ibm871",                                        20871,  no }, /* IANA */
434   { 106, "cp871",                                         20871,  no }, /* IANA */
435   { 106, "ebcdic-cp-is",                                  20871,  no }, /* IANA */
436   { 106, "csibm871",                                      20871,  no }, /* IANA */
437   { 106, "x-ebcdic-icelandic",                            20871,  no }, /* MICROSOFT */
438   { 107, "ibm880",                                        20880,  no }, /* IANA */
439   { 107, "cp880",                                         20880,  no }, /* IANA */
440   { 107, "ebcdic-cyrillic",                               20880,  no }, /* IANA */
441   { 107, "csibm880",                                      20880,  no }, /* IANA */
442   { 107, "x-ebcdic-cyrillicrussian",                      20880,  no }, /* MICROSOFT */
443   { 108, "ibm891",                                            0,  no }, /* IANA */
444   { 108, "cp891",                                             0,  no }, /* IANA */
445   { 108, "csibm891",                                          0,  no }, /* IANA */
446   { 109, "ibm903",                                            0,  no }, /* IANA */
447   { 109, "cp903",                                             0,  no }, /* IANA */
448   { 109, "csibm903",                                          0,  no }, /* IANA */
449   { 110, "ibm904",                                            0,  no }, /* IANA */
450   { 110, "cp904",                                             0,  no }, /* IANA */
451   { 110, "904",                                               0,  no }, /* IANA */
452   { 110, "csibbm904",                                         0,  no }, /* IANA */
453   { 111, "ibm905",                                        20905,  no }, /* IANA */
454   { 111, "cp905",                                         20905,  no }, /* IANA */
455   { 111, "ebcdic-cp-tr",                                  20905,  no }, /* IANA */
456   { 111, "csibm905",                                      20905,  no }, /* IANA */
457   { 111, "x-ebcdic-turkish",                              20905,  no }, /* MICROSOFT */
458   { 112, "ibm918",                                            0,  no }, /* IANA */
459   { 112, "cp918",                                             0,  no }, /* IANA */
460   { 112, "ebcdic-cp-ar2",                                     0,  no }, /* IANA */
461   { 112, "csibm918",                                          0,  no }, /* IANA */
462   { 113, "iso-ir-143",                                        0,  no }, /* IANA */
463   { 113, "iec_p27-1",                                         0,  no }, /* IANA */
464   { 113, "csiso143iecp271",                                   0,  no }, /* IANA */
465   { 114, "iso-ir-49",                                         0,  no }, /* IANA */
466   { 114, "inis",                                              0,  no }, /* IANA */
467   { 114, "csiso49inis",                                       0,  no }, /* IANA */
468   { 115, "iso-ir-50",                                         0,  no }, /* IANA */
469   { 115, "inis-8",                                            0,  no }, /* IANA */
470   { 115, "csiso50inis8",                                      0,  no }, /* IANA */
471   { 116, "iso-ir-51",                                         0,  no }, /* IANA */
472   { 116, "inis-cyrillic",                                     0,  no }, /* IANA */
473   { 116, "csiso51iniscyrillic",                               0,  no }, /* IANA */
474   { 117, "invariant",                                         0,  no }, /* IANA */
475   { 117, "csinvariant",                                       0,  no }, /* IANA */
476   { 118, "iso-10646-j-1",                                     0,  no }, /* IANA */
477   { 119, "iso-10646-ucs-2",                                1200,  no }, /* IANA */
478   { 119, "csunicode",                                      1200,  no }, /* IANA */
479   { 119, "unicode",                                        1200,  no }, /* MICROSOFT */
480   { 120, "iso-10646-ucs-4",                                   0,  no }, /* IANA */
481   { 120, "csucs4",                                            0,  no }, /* IANA */
482   { 121, "iso-10646-ucs-basic",                               0,  no }, /* IANA */
483   { 121, "csunicodeascii",                                    0,  no }, /* IANA */
484   { 122, "iso-10646-unicode-latin1",                          0,  no }, /* IANA */
485   { 122, "iso-10646",                                         0,  no }, /* IANA */
486   { 122, "csunicodelatin1",                                   0,  no }, /* IANA */
487   { 123, "iso-10646-utf-1",                                   0,  no }, /* IANA */
488   { 123, "csiso10646utf1",                                    0,  no }, /* IANA */
489   { 124, "iso-2022-cn",                                       0, yes }, /* IANA */
490   { 125, "iso-2022-cn-ext",                                   0, yes }, /* IANA */
491   { 126, "iso-2022-jp",                                   50220, yes }, /* IANA */
492   { 126, "csiso2022jp",                                   50220, yes }, /* IANA */
493   { 127, "iso-2022-jp-2",                                     0, yes }, /* IANA */
494   { 127, "csiso2022jp2",                                      0, yes }, /* IANA */
495   { 128, "iso-2022-kr",                                   50225, yes }, /* IANA */
496   { 128, "csiso2022kr",                                   50225, yes }, /* IANA */
497   { 129, "iso-8859-1-windows-3.0-latin-1",                    0,  no }, /* IANA */
498   { 129, "cswindows30latin1",                                 0,  no }, /* IANA */
499   { 130, "iso-8859-1-windows-3.1-latin-1",                    0,  no }, /* IANA */
500   { 130, "cswindows31latin1",                                 0,  no }, /* IANA */
501   { 131, "iso-8859-10",                                       0,  no }, /* IANA */
502   { 131, "iso-ir-157",                                        0,  no }, /* IANA */
503   { 131, "l6",                                                0,  no }, /* IANA */
504   { 131, "iso_8859-10:1992",                                  0,  no }, /* IANA */
505   { 131, "csisolatin6",                                       0,  no }, /* IANA */
506   { 131, "latin6",                                            0,  no }, /* IANA */
507   { 132, "iso-8859-13",                                   28603,  no }, /* IANA */
508   { 133, "iso-8859-14",                                       0,  no }, /* IANA */
509   { 133, "iso-ir-199",                                        0,  no }, /* IANA */
510   { 133, "iso-celtic",                                        0,  no }, /* IANA */
511   { 133, "iso_8859-14:1998",                                  0,  no }, /* IANA */
512   { 133, "iso_8859-14",                                       0,  no }, /* IANA */
513   { 133, "latin8",                                            0,  no }, /* IANA */
514   { 133, "l8",                                                0,  no }, /* IANA */
515   { 134, "iso-8859-15",                                   28605,  no }, /* IANA */
516   { 134, "iso_8859-15",                                   28605,  no }, /* IANA */
517   { 134, "latin-9",                                       28605,  no }, /* IANA */
518   { 134, "l9",                                            28605,  no }, /* MICROSOFT */
519   { 134, "latin9",                                        28605,  no }, /* MICROSOFT */
520   { 135, "iso-8859-16",                                       0,  no }, /* IANA */
521   { 135, "iso-ir-226",                                        0,  no }, /* IANA */
522   { 135, "iso_8859-16:2001",                                  0,  no }, /* IANA */
523   { 135, "iso_8859-16",                                       0,  no }, /* IANA */
524   { 135, "latin10",                                           0,  no }, /* IANA */
525   { 135, "l10",                                               0,  no }, /* IANA */
526   { 136, "iso-8859-2-windows-latin-2",                        0,  no }, /* IANA */
527   { 136, "cswindows31latin2",                                 0,  no }, /* IANA */
528   { 137, "iso-8859-9-windows-latin-5",                        0,  no }, /* IANA */
529   { 137, "cswindows31latin5",                                 0,  no }, /* IANA */
530   { 138, "iso-ir-90",                                         0,  no }, /* IANA */
531   { 138, "csiso90",                                           0,  no }, /* IANA */
532   { 139, "iso-unicode-ibm-1261",                              0,  no }, /* IANA */
533   { 139, "csunicodeibm1261",                                  0,  no }, /* IANA */
534   { 140, "iso-unicode-ibm-1264",                              0,  no }, /* IANA */
535   { 140, "csunicodeibm1264",                                  0,  no }, /* IANA */
536   { 141, "iso-unicode-ibm-1265",                              0,  no }, /* IANA */
537   { 141, "csunicodeibm1265",                                  0,  no }, /* IANA */
538   { 142, "iso-unicode-ibm-1268",                              0,  no }, /* IANA */
539   { 142, "csunicodeibm1268",                                  0,  no }, /* IANA */
540   { 143, "iso-unicode-ibm-1276",                              0,  no }, /* IANA */
541   { 143, "csunicodeibm1276",                                  0,  no }, /* IANA */
542   { 144, "iso-ir-155",                                        0,  no }, /* IANA */
543   { 144, "iso_10367-box",                                     0,  no }, /* IANA */
544   { 144, "csiso10367box",                                     0,  no }, /* IANA */
545   { 145, "iso-ir-98",                                         0,  no }, /* IANA */
546   { 145, "iso_2033-1983",                                     0,  no }, /* IANA */
547   { 145, "e13b",                                              0,  no }, /* IANA */
548   { 145, "csiso2033",                                         0,  no }, /* IANA */
549   { 146, "iso-ir-37",                                         0,  no }, /* IANA */
550   { 146, "iso_5427",                                          0,  no }, /* IANA */
551   { 146, "csiso5427cyrillic",                                 0,  no }, /* IANA */
552   { 147, "iso-ir-54",                                         0,  no }, /* IANA */
553   { 147, "iso_5427:1981",                                     0,  no }, /* IANA */
554   { 147, "iso5427cyrillic1981",                               0,  no }, /* IANA */
555   { 148, "iso-ir-55",                                         0,  no }, /* IANA */
556   { 148, "iso_5428:1980",                                     0,  no }, /* IANA */
557   { 148, "csiso5428greek",                                    0,  no }, /* IANA */
558   { 149, "iso_646.basic:1983",                                0,  no }, /* IANA */
559   { 149, "ref",                                               0,  no }, /* IANA */
560   { 149, "csiso646basic1983",                                 0,  no }, /* IANA */
561   { 150, "iso-ir-2",                                      20105,  no }, /* IANA */
562   { 150, "iso_646.irv:1983",                              20105,  no }, /* IANA */
563   { 150, "irv",                                           20105,  no }, /* IANA */
564   { 150, "csiso2intlrefversion",                          20105,  no }, /* IANA */
565   { 150, "x-ia5",                                         20105,  no }, /* MICROSOFT */
566   { 151, "iso-ir-152",                                        0,  no }, /* IANA */
567   { 151, "iso_6937-2-25",                                     0,  no }, /* IANA */
568   { 151, "csiso6937add",                                      0,  no }, /* IANA */
569   { 152, "iso-ir-142",                                        0,  no }, /* IANA */
570   { 152, "iso_6937-2-add",                                    0,  no }, /* IANA */
571   { 152, "csisotextcomm",                                     0,  no }, /* IANA */
572   { 153, "iso-8859-1",                                    28591,  no }, /* IANA */
573   { 153, "iso-ir-100",                                    28591,  no }, /* IANA */
574   { 153, "iso_8859-1:1987",                               28591,  no }, /* IANA */
575   { 153, "iso_8859-1",                                    28591,  no }, /* IANA */
576   { 153, "latin1",                                        28591,  no }, /* IANA */
577   { 153, "l1",                                            28591,  no }, /* IANA */
578   { 153, "ibm819",                                        28591,  no }, /* IANA */
579   { 153, "cp819",                                         28591,  no }, /* IANA */
580   { 153, "csisolatin1",                                   28591,  no }, /* IANA */
581   { 153, "iso8859-1",                                     28591,  no }, /* MICROSOFT */
582   { 154, "iso-8859-2",                                    28592,  no }, /* IANA */
583   { 154, "iso-ir-101",                                    28592,  no }, /* IANA */
584   { 154, "iso_8859-2:1987",                               28592,  no }, /* IANA */
585   { 154, "iso_8859-2",                                    28592,  no }, /* IANA */
586   { 154, "latin2",                                        28592,  no }, /* IANA */
587   { 154, "l2",                                            28592,  no }, /* IANA */
588   { 154, "csisolatin2",                                   28592,  no }, /* IANA */
589   { 154, "iso8859-2",                                     28592,  no }, /* MICROSOFT */
590   { 155, "iso-8859-3",                                    28593,  no }, /* IANA */
591   { 155, "iso-ir-109",                                    28593,  no }, /* IANA */
592   { 155, "iso_8859-3:1988",                               28593,  no }, /* IANA */
593   { 155, "iso_8859-3",                                    28593,  no }, /* IANA */
594   { 155, "latin3",                                        28593,  no }, /* IANA */
595   { 155, "l3",                                            28593,  no }, /* IANA */
596   { 155, "csisolatin3",                                   28593,  no }, /* IANA */
597   { 156, "iso-8859-4",                                    28594,  no }, /* IANA */
598   { 156, "iso-ir-110",                                    28594,  no }, /* IANA */
599   { 156, "iso_8859-4:1988",                               28594,  no }, /* IANA */
600   { 156, "iso_8859-4",                                    28594,  no }, /* IANA */
601   { 156, "latin4",                                        28594,  no }, /* IANA */
602   { 156, "l4",                                            28594,  no }, /* IANA */
603   { 156, "csisolatin4",                                   28594,  no }, /* IANA */
604   { 157, "iso-8859-5",                                    28595,  no }, /* IANA */
605   { 157, "iso-ir-144",                                    28595,  no }, /* IANA */
606   { 157, "iso_8859-5:1988",                               28595,  no }, /* IANA */
607   { 157, "iso_8859-5",                                    28595,  no }, /* IANA */
608   { 157, "cyrillic",                                      28595,  no }, /* IANA */
609   { 157, "csisolatincyrillic",                            28595,  no }, /* IANA */
610   { 158, "iso-8859-6-e",                                      0,  no }, /* IANA */
611   { 158, "iso_8859-6-e",                                      0,  no }, /* IANA */
612   { 158, "csiso88596e",                                       0,  no }, /* IANA */
613   { 159, "iso-8859-6-i",                                      0,  no }, /* IANA */
614   { 159, "iso_8859-6-i",                                      0,  no }, /* IANA */
615   { 159, "csiso88596i",                                       0,  no }, /* IANA */
616   { 160, "iso-8859-6",                                    28596,  no }, /* IANA */
617   { 160, "iso-ir-127",                                    28596,  no }, /* IANA */
618   { 160, "iso_8859-6:1987",                               28596,  no }, /* IANA */
619   { 160, "iso_8859-6",                                    28596,  no }, /* IANA */
620   { 160, "ecma-114",                                      28596,  no }, /* IANA */
621   { 160, "asmo-708",                                      28596,  no }, /* IANA */
622   { 160, "arabic",                                        28596,  no }, /* IANA */
623   { 160, "csisolatinarabic",                              28596,  no }, /* IANA */
624   { 161, "iso-8859-7",                                    28597,  no }, /* IANA */
625   { 161, "iso-ir-126",                                    28597,  no }, /* IANA */
626   { 161, "iso_8859-7:1987",                               28597,  no }, /* IANA */
627   { 161, "iso_8859-7",                                    28597,  no }, /* IANA */
628   { 161, "elot_928",                                      28597,  no }, /* IANA */
629   { 161, "ecma-118",                                      28597,  no }, /* IANA */
630   { 161, "greek",                                         28597,  no }, /* IANA */
631   { 161, "greek8",                                        28597,  no }, /* IANA */
632   { 161, "csisolatingreek",                               28597,  no }, /* IANA */
633   { 162, "iso-8859-8-e",                                      0,  no }, /* IANA */
634   { 162, "iso_8859-8-e",                                      0,  no }, /* IANA */
635   { 162, "csiso88598e",                                       0,  no }, /* IANA */
636   { 163, "iso-8859-8-i",                                  38598,  no }, /* IANA */
637   { 163, "iso_8859-8-i",                                  38598,  no }, /* IANA */
638   { 163, "csiso88598i",                                   38598,  no }, /* IANA */
639   { 164, "iso-8859-8",                                    28598,  no }, /* IANA */
640   { 164, "iso-ir-138",                                    28598,  no }, /* IANA */
641   { 164, "iso_8859-8:1988",                               28598,  no }, /* IANA */
642   { 164, "iso_8859-8",                                    28598,  no }, /* IANA */
643   { 164, "hebrew",                                        28598,  no }, /* IANA */
644   { 164, "csisolatinhebrew",                              28598,  no }, /* IANA */
645   { 164, "logical",                                       28598,  no }, /* MICROSOFT */
646   { 164, "visual",                                        28598,  no }, /* MICROSOFT */
647   { 165, "iso-8859-9",                                    28599,  no }, /* IANA */
648   { 165, "iso-ir-148",                                    28599,  no }, /* IANA */
649   { 165, "iso_8859-9:1989",                               28599,  no }, /* IANA */
650   { 165, "iso_8859-9",                                    28599,  no }, /* IANA */
651   { 165, "latin5",                                        28599,  no }, /* IANA */
652   { 165, "l5",                                            28599,  no }, /* IANA */
653   { 165, "csisolatin5",                                   28599,  no }, /* IANA */
654   { 166, "iso-ir-154",                                        0,  no }, /* IANA */
655   { 166, "iso_8859-supp",                                     0,  no }, /* IANA */
656   { 166, "latin1-2-5",                                        0,  no }, /* IANA */
657   { 166, "csiso8859supp",                                     0,  no }, /* IANA */
658   { 167, "iso-ir-15",                                         0,  no }, /* IANA */
659   { 167, "it",                                                0,  no }, /* IANA */
660   { 167, "iso646-it",                                         0,  no }, /* IANA */
661   { 167, "csiso15italian",                                    0,  no }, /* IANA */
662   { 168, "iso-ir-13",                                         0,  no }, /* IANA */
663   { 168, "jis_c6220-1969-jp",                                 0,  no }, /* IANA */
664   { 168, "jis_c6220-1969",                                    0,  no }, /* IANA */
665   { 168, "katakana",                                          0,  no }, /* IANA */
666   { 168, "x0201-7",                                           0,  no }, /* IANA */
667   { 168, "csiso13jisc6220jp",                                 0,  no }, /* IANA */
668   { 169, "iso-ir-14",                                         0,  no }, /* IANA */
669   { 169, "jis_c6220-1969-ro",                                 0,  no }, /* IANA */
670   { 169, "jp",                                                0,  no }, /* IANA */
671   { 169, "iso646-jp",                                         0,  no }, /* IANA */
672   { 169, "csiso14jisc6220ro",                                 0,  no }, /* IANA */
673   { 170, "iso-ir-42",                                         0,  no }, /* IANA */
674   { 170, "jis_c6226-1978",                                    0,  no }, /* IANA */
675   { 170, "csiso42jisc62261978",                               0,  no }, /* IANA */
676   { 171, "iso-ir-87",                                         0,  no }, /* IANA */
677   { 171, "jis_c6226-1983",                                    0,  no }, /* IANA */
678   { 171, "x0208",                                             0,  no }, /* IANA */
679   { 171, "jis_x0208-1983",                                    0,  no }, /* IANA */
680   { 171, "csiso87jisx0208",                                   0,  no }, /* IANA */
681   { 172, "iso-ir-91",                                         0,  no }, /* IANA */
682   { 172, "jis_c6229-1984-a",                                  0,  no }, /* IANA */
683   { 172, "jp-ocr-a",                                          0,  no }, /* IANA */
684   { 172, "csiso91jisc62291984a",                              0,  no }, /* IANA */
685   { 173, "iso-ir-92",                                         0,  no }, /* IANA */
686   { 173, "jis_c6229-1984-b",                                  0,  no }, /* IANA */
687   { 173, "iso646-jp-ocr-b",                                   0,  no }, /* IANA */
688   { 173, "jp-ocr-b",                                          0,  no }, /* IANA */
689   { 173, "csiso92jisc62991984b",                              0,  no }, /* IANA */
690   { 174, "iso-ir-93",                                         0,  no }, /* IANA */
691   { 174, "jis_c6229-1984-b-add",                              0,  no }, /* IANA */
692   { 174, "jp-ocr-b-add",                                      0,  no }, /* IANA */
693   { 174, "csiso93jis62291984badd",                            0,  no }, /* IANA */
694   { 175, "iso-ir-94",                                         0,  no }, /* IANA */
695   { 175, "jis_c6229-1984-hand",                               0,  no }, /* IANA */
696   { 175, "jp-ocr-hand",                                       0,  no }, /* IANA */
697   { 175, "csiso94jis62291984hand",                            0,  no }, /* IANA */
698   { 176, "iso-ir-95",                                         0,  no }, /* IANA */
699   { 176, "jis_c6229-1984-hand-add",                           0,  no }, /* IANA */
700   { 176, "jp-ocr-hand-add",                                   0,  no }, /* IANA */
701   { 176, "csiso95jis62291984handadd",                         0,  no }, /* IANA */
702   { 177, "iso-ir-96",                                         0,  no }, /* IANA */
703   { 177, "jis_c6229-1984-kana",                               0,  no }, /* IANA */
704   { 177, "csiso96jisc62291984kana",                           0,  no }, /* IANA */
705   { 178, "jis_encoding",                                      0,  no }, /* IANA */
706   { 178, "csjisencoding",                                     0,  no }, /* IANA */
707   { 179, "jis_x0201",                                         0,  no }, /* IANA */
708   { 179, "x0201",                                             0,  no }, /* IANA */
709   { 179, "cshalfwidthkatakana",                               0,  no }, /* IANA */
710   { 180, "iso-ir-159",                                        0,  no }, /* IANA */
711   { 180, "jis_x0212-1990",                                    0,  no }, /* IANA */
712   { 180, "x0212",                                             0,  no }, /* IANA */
713   { 180, "csiso159jisx02121990",                              0,  no }, /* IANA */
714   { 181, "iso-ir-141",                                        0,  no }, /* IANA */
715   { 181, "jus_i.b1.002",                                      0,  no }, /* IANA */
716   { 181, "iso646-yu",                                         0,  no }, /* IANA */
717   { 181, "js",                                                0,  no }, /* IANA */
718   { 181, "yu",                                                0,  no }, /* IANA */
719   { 181, "csiso141jusib1002",                                 0,  no }, /* IANA */
720   { 182, "iso-ir-147",                                        0,  no }, /* IANA */
721   { 182, "jus_i.b1.003-mac",                                  0,  no }, /* IANA */
722   { 182, "macedonian",                                        0,  no }, /* IANA */
723   { 182, "csiso147macedonian",                                0,  no }, /* IANA */
724   { 183, "iso-ir-146",                                        0,  no }, /* IANA */
725   { 183, "jus_i.b1.003-serb",                                 0,  no }, /* IANA */
726   { 183, "serbian",                                           0,  no }, /* IANA */
727   { 183, "csiso146serbian",                                   0,  no }, /* IANA */
728   { 184, "koi8-r",                                        20866,  no }, /* IANA */
729   { 184, "cskoi8r",                                       20866,  no }, /* IANA */
730   { 184, "koi8",                                          20866,  no }, /* MICROSOFT */
731   { 184, "koi",                                           20866,  no }, /* MICROSOFT */
732   { 184, "koi8r",                                         20866,  no }, /* MICROSOFT */
733   { 185, "koi8-u",                                        21866,  no }, /* IANA */
734   { 185, "koi8-ru",                                       21866,  no }, /* MICROSOFT */
735   { 186, "iso-ir-149",                                      949,  no }, /* IANA */
736   { 186, "ks_c_5601-1987",                                  949,  no }, /* IANA */
737   { 186, "ks_c_5601-1989",                                  949,  no }, /* IANA */
738   { 186, "ksc_5601",                                        949,  no }, /* IANA */
739   { 186, "korean",                                          949,  no }, /* IANA */
740   { 186, "csksc56011987",                                   949,  no }, /* IANA */
741   { 186, "ks_c_5601_1987",                                  949,  no }, /* MICROSOFT */
742   { 186, "ksc5601",                                         949,  no }, /* MICROSOFT */
743   { 186, "ks_c_5601",                                       949,  no }, /* MICROSOFT */
744   { 187, "ksc5636",                                           0,  no }, /* IANA */
745   { 187, "iso646-kr",                                         0,  no }, /* IANA */
746   { 187, "csksc5636",                                         0,  no }, /* IANA */
747   { 188, "iso-ir-19",                                         0,  no }, /* IANA */
748   { 188, "latin-greek",                                       0,  no }, /* IANA */
749   { 188, "csiso19latingreek",                                 0,  no }, /* IANA */
750   { 189, "iso-ir-27",                                         0,  no }, /* IANA */
751   { 189, "latin-greek-1",                                     0,  no }, /* IANA */
752   { 189, "csiso27latingreek1",                                0,  no }, /* IANA */
753   { 190, "iso-ir-158",                                        0,  no }, /* IANA */
754   { 190, "latin-lap",                                         0,  no }, /* IANA */
755   { 190, "lap",                                               0,  no }, /* IANA */
756   { 190, "csiso158lap",                                       0,  no }, /* IANA */
757   { 191, "macintosh",                                     10000,  no }, /* IANA */
758   { 191, "mac",                                           10000,  no }, /* IANA */
759   { 191, "csmacintosh",                                   10000,  no }, /* IANA */
760   { 192, "microsoft-publishing",                              0,  no }, /* IANA */
761   { 192, "csmicrosoftpublishing",                             0,  no }, /* IANA */
762   { 193, "mnem",                                              0,  no }, /* IANA */
763   { 193, "csmnem",                                            0,  no }, /* IANA */
764   { 194, "mnemonic",                                          0,  no }, /* IANA */
765   { 194, "csmnemonic",                                        0,  no }, /* IANA */
766   { 195, "iso-ir-86",                                         0,  no }, /* IANA */
767   { 195, "msz_7795.3",                                        0,  no }, /* IANA */
768   { 195, "iso646-hu",                                         0,  no }, /* IANA */
769   { 195, "hu",                                                0,  no }, /* IANA */
770   { 195, "csiso86hungarian",                                  0,  no }, /* IANA */
771   { 196, "iso-ir-9-1",                                        0,  no }, /* IANA */
772   { 196, "nats-dano",                                         0,  no }, /* IANA */
773   { 196, "csnatsdano",                                        0,  no }, /* IANA */
774   { 197, "iso-ir-9-2",                                        0,  no }, /* IANA */
775   { 197, "nats-dano-add",                                     0,  no }, /* IANA */
776   { 197, "csnatsdanoadd",                                     0,  no }, /* IANA */
777   { 198, "iso-ir-8-1",                                        0,  no }, /* IANA */
778   { 198, "nats-sefi",                                         0,  no }, /* IANA */
779   { 198, "csnatssefi",                                        0,  no }, /* IANA */
780   { 199, "iso-ir-8-2",                                        0,  no }, /* IANA */
781   { 199, "nats-sefi-add",                                     0,  no }, /* IANA */
782   { 199, "csnatssefiadd",                                     0,  no }, /* IANA */
783   { 200, "iso-ir-151",                                        0,  no }, /* IANA */
784   { 200, "nc_nc00-10:81",                                     0,  no }, /* IANA */
785   { 200, "cuba",                                              0,  no }, /* IANA */
786   { 200, "iso646-cu",                                         0,  no }, /* IANA */
787   { 200, "csiso151cuba",                                      0,  no }, /* IANA */
788   { 201, "iso-ir-69",                                         0,  no }, /* IANA */
789   { 201, "nf_z_62-010",                                       0,  no }, /* IANA */
790   { 201, "iso646-fr",                                         0,  no }, /* IANA */
791   { 201, "fr",                                                0,  no }, /* IANA */
792   { 201, "csiso69french",                                     0,  no }, /* IANA */
793   { 202, "iso-ir-25",                                         0,  no }, /* IANA */
794   { 202, "nf_z_62-010_(1973)",                                0,  no }, /* IANA */
795   { 202, "iso646-fr1",                                        0,  no }, /* IANA */
796   { 202, "csiso25french",                                     0,  no }, /* IANA */
797   { 203, "iso-ir-60",                                     20108,  no }, /* IANA */
798   { 203, "ns_4551-1",                                     20108,  no }, /* IANA */
799   { 203, "iso646-no",                                     20108,  no }, /* IANA */
800   { 203, "no",                                            20108,  no }, /* IANA */
801   { 203, "csiso60danishnorwegian",                        20108,  no }, /* IANA */
802   { 203, "csiso60norwegian1",                             20108,  no }, /* IANA */
803   { 203, "x-ia5-norwegian",                               20108,  no }, /* MICROSOFT */
804   { 204, "iso-ir-61",                                         0,  no }, /* IANA */
805   { 204, "ns_4551-2",                                         0,  no }, /* IANA */
806   { 204, "iso646-no2",                                        0,  no }, /* IANA */
807   { 204, "no2",                                               0,  no }, /* IANA */
808   { 204, "csiso61norwegian2",                                 0,  no }, /* IANA */
809   { 205, "pc8-danish-norwegian",                              0,  no }, /* IANA */
810   { 205, "cspc8danishnorwegian",                              0,  no }, /* IANA */
811   { 206, "pc8-turkish",                                       0,  no }, /* IANA */
812   { 206, "cspc8turkish",                                      0,  no }, /* IANA */
813   { 207, "iso-ir-16",                                         0,  no }, /* IANA */
814   { 207, "pt",                                                0,  no }, /* IANA */
815   { 207, "iso646-pt",                                         0,  no }, /* IANA */
816   { 207, "csiso16portuguese",                                 0,  no }, /* IANA */
817   { 208, "iso-ir-84",                                         0,  no }, /* IANA */
818   { 208, "pt2",                                               0,  no }, /* IANA */
819   { 208, "iso646-pt2",                                        0,  no }, /* IANA */
820   { 208, "csiso84portuguese2",                                0,  no }, /* IANA */
821   { 209, "ptcp154",                                           0,  no }, /* IANA */
822   { 209, "csptcp154",                                         0,  no }, /* IANA */
823   { 209, "pt154",                                             0,  no }, /* IANA */
824   { 209, "cp154",                                             0,  no }, /* IANA */
825   { 209, "cyrillic-asian",                                    0,  no }, /* IANA */
826   { 210, "scsu",                                              0,  no }, /* IANA */
827   { 211, "iso-ir-10",                                     20107,  no }, /* IANA */
828   { 211, "sen_850200_b",                                  20107,  no }, /* IANA */
829   { 211, "fi",                                            20107,  no }, /* IANA */
830   { 211, "iso646-fi",                                     20107,  no }, /* IANA */
831   { 211, "iso646-se",                                     20107,  no }, /* IANA */
832   { 211, "se",                                            20107,  no }, /* IANA */
833   { 211, "csiso10swedish",                                20107,  no }, /* IANA */
834   { 211, "x-ia5-swedish",                                 20107,  no }, /* MICROSOFT */
835   { 212, "iso-ir-11",                                         0,  no }, /* IANA */
836   { 212, "sen_850200_c",                                      0,  no }, /* IANA */
837   { 212, "iso646-se2",                                        0,  no }, /* IANA */
838   { 212, "se2",                                               0,  no }, /* IANA */
839   { 212, "csiso11swedishfornames",                            0,  no }, /* IANA */
840   { 213, "shift_jis",                                       932,  no }, /* IANA */
841   { 213, "ms_kanji",                                        932,  no }, /* IANA */
842   { 213, "csshiftjis",                                      932,  no }, /* IANA */
843   { 213, "shift-jis",                                       932,  no }, /* MICROSOFT */
844   { 213, "x-ms-cp932",                                      932,  no }, /* MICROSOFT */
845   { 213, "x-sjis",                                          932,  no }, /* MICROSOFT */
846   { 214, "iso-ir-128",                                        0,  no }, /* IANA */
847   { 214, "t.101-g2",                                          0,  no }, /* IANA */
848   { 214, "csiso128t101g2",                                    0,  no }, /* IANA */
849   { 215, "iso-ir-102",                                        0,  no }, /* IANA */
850   { 215, "t.61-7bit",                                         0,  no }, /* IANA */
851   { 215, "csiso102t617bit",                                   0,  no }, /* IANA */
852   { 216, "iso-ir-103",                                        0,  no }, /* IANA */
853   { 216, "t.61-8bit",                                         0,  no }, /* IANA */
854   { 216, "t.61",                                              0,  no }, /* IANA */
855   { 216, "csiso103t618bit",                                   0,  no }, /* IANA */
856   { 217, "tis-620",                                         874,  no }, /* IANA */
857   { 217, "windows-874",                                     874,  no }, /* MICROSOFT */
858   { 217, "iso-8859-11",                                     874,  no }, /* MICROSOFT */
859   { 217, "dos-874",                                         874,  no }, /* MICROSOFT */
860   { 218, "unicode-1-1",                                       0,  no }, /* IANA */
861   { 218, "csunicode11",                                       0,  no }, /* IANA */
862   { 219, "unicode-1-1-utf-7",                             65000, yes }, /* IANA */
863   { 219, "csunicode11utf7",                               65000, yes }, /* IANA */
864   { 219, "x-unicode-2-0-utf-7",                           65000, yes }, /* MICROSOFT */
865   { 220, "unknown-8bit",                                      0,  no }, /* IANA */
866   { 220, "csunknown8bit",                                     0,  no }, /* IANA */
867   { 221, "us-dk",                                             0,  no }, /* IANA */
868   { 221, "csusdk",                                            0,  no }, /* IANA */
869   { 222, "utf-16",                                         1200,  no }, /* IANA */
870   { 222, "unicode",                                        1200,  no }, /* MICROSOFT */
871   { 223, "utf-16be",                                       1201,  no }, /* IANA */
872   { 223, "unicodefffe",                                    1201,  no }, /* MICROSOFT */
873   { 224, "utf-16le",                                       1200,  no }, /* IANA */
874   { 224, "unicode",                                        1200,  no }, /* MICROSOFT */
875   { 225, "utf-32",                                            0,  no }, /* IANA */
876   { 226, "utf-32be",                                          0,  no }, /* IANA */
877   { 227, "utf-32le",                                          0,  no }, /* IANA */
878   { 228, "utf-7",                                         65000, yes }, /* IANA */
879   { 228, "x-unicode-2-0-utf-7",                           65000, yes }, /* MICROSOFT */
880   { 229, "utf-8",                                         65001,  no }, /* IANA */
881   { 229, "unicode-2-0-utf-8",                             65001,  no }, /* MICROSOFT */
882   { 229, "unicode-1-1-utf-8",                             65001,  no }, /* MICROSOFT */
883   { 229, "x-unicode-2-0-utf-8",                           65001,  no }, /* MICROSOFT */
884   { 230, "ventura-international",                             0,  no }, /* IANA */
885   { 230, "csventurainternational",                            0,  no }, /* IANA */
886   { 231, "ventura-math",                                      0,  no }, /* IANA */
887   { 231, "csventuramath",                                     0,  no }, /* IANA */
888   { 232, "ventura-us",                                        0,  no }, /* IANA */
889   { 232, "csventuraus",                                       0,  no }, /* IANA */
890   { 233, "iso-ir-70",                                         0,  no }, /* IANA */
891   { 233, "videotex-suppl",                                    0,  no }, /* IANA */
892   { 233, "csiso70videotexsupp1",                              0,  no }, /* IANA */
893   { 234, "viqr",                                              0,  no }, /* IANA */
894   { 234, "csviqr",                                            0,  no }, /* IANA */
895   { 235, "viscii",                                            0,  no }, /* IANA */
896   { 235, "csviscii",                                          0,  no }, /* IANA */
897   { 236, "windows-1250",                                   1250,  no }, /* IANA */
898   { 236, "x-cp1250",                                       1250,  no }, /* MICROSOFT */
899   { 237, "windows-1251",                                   1251,  no }, /* IANA */
900   { 237, "x-cp1251",                                       1251,  no }, /* MICROSOFT */
901   { 238, "windows-1252",                                   1252,  no }, /* IANA */
902   { 238, "x-ansi",                                         1252,  no }, /* MICROSOFT */
903   { 239, "windows-1253",                                   1253,  no }, /* IANA */
904   { 240, "windows-1254",                                   1254,  no }, /* IANA */
905   { 241, "windows-1255",                                   1255,  no }, /* IANA */
906   { 242, "windows-1256",                                   1256,  no }, /* IANA */
907   { 242, "cp1256",                                         1256,  no }, /* MICROSOFT */
908   { 243, "windows-1257",                                   1257,  no }, /* IANA */
909   { 244, "windows-1258",                                   1258,  no }, /* IANA */
910   { 245, "windows-31j",                                     932,  no }, /* IANA */
911   { 245, "cswindows31j",                                    932,  no }, /* IANA */
912   { 245, "shift-jis",                                       932,  no }, /* MICROSOFT */
913   { 245, "x-ms-cp932",                                      932,  no }, /* MICROSOFT */
914   { 245, "x-sjis",                                          932,  no }, /* MICROSOFT */
915   { 246, "dos-720",                                         720,  no }, /* MICROSOFT */
916   { 247, "euc-cn",                                        51936,  no }, /* MICROSOFT */
917   { 248, "ibm737",                                          737,  no }, /* MICROSOFT */
918   { 249, "johab",                                          1361,  no }, /* MICROSOFT */
919   { 250, "x-chinese-cns",                                 20000,  no }, /* MICROSOFT */
920   { 251, "x-chinese-eten",                                20002,  no }, /* MICROSOFT */
921   { 252, "x-ebcdic-cyrillicserbianbulgarian",             21025,  no }, /* MICROSOFT */
922   { 253, "x-ebcdic-greekmodern",                            875,  no }, /* MICROSOFT */
923   { 254, "x-ebcdic-japaneseandjapaneselatin",             50939,  no }, /* MICROSOFT */
924   { 255, "x-ebcdic-japaneseandkana",                      50930,  no }, /* MICROSOFT */
925   { 256, "x-ebcdic-japaneseanduscanada",                  50931,  no }, /* MICROSOFT */
926   { 257, "x-ebcdic-koreanandkoreanextended",              50933,  no }, /* MICROSOFT */
927   { 258, "x-ebcdic-koreanextended",                       20833,  no }, /* MICROSOFT */
928   { 259, "x-ebcdic-simplifiedchinese",                    50935,  no }, /* MICROSOFT */
929   { 260, "x-ebcdic-traditionalchinese",                   50937,  no }, /* MICROSOFT */
930   { 261, "x-euc-cn",                                      51936,  no }, /* MICROSOFT */
931   { 262, "x-europa",                                      29001,  no }, /* MICROSOFT */
932   { 263, "x-iscii-as",                                    57006,  no }, /* MICROSOFT */
933   { 264, "x-iscii-be",                                    57003,  no }, /* MICROSOFT */
934   { 265, "x-iscii-de",                                    57002,  no }, /* MICROSOFT */
935   { 266, "x-iscii-gu",                                    57010,  no }, /* MICROSOFT */
936   { 267, "x-iscii-ka",                                    57008,  no }, /* MICROSOFT */
937   { 268, "x-iscii-ma",                                    57009,  no }, /* MICROSOFT */
938   { 269, "x-iscii-or",                                    57007,  no }, /* MICROSOFT */
939   { 270, "x-iscii-pa",                                    57011,  no }, /* MICROSOFT */
940   { 271, "x-iscii-ta",                                    57004,  no }, /* MICROSOFT */
941   { 272, "x-iscii-te",                                    57005,  no }, /* MICROSOFT */
942   { 273, "x-mac-arabic",                                  10004,  no }, /* MICROSOFT */
943   { 274, "x-mac-ce",                                      10029,  no }, /* MICROSOFT */
944   { 275, "x-mac-chinesesimp",                             10008,  no }, /* MICROSOFT */
945   { 276, "x-mac-chinesetrad",                             10002,  no }, /* MICROSOFT */
946   { 277, "x-mac-cyrillic",                                10007,  no }, /* MICROSOFT */
947   { 278, "x-mac-greek",                                   10006,  no }, /* MICROSOFT */
948   { 279, "x-mac-hebrew",                                  10005,  no }, /* MICROSOFT */
949   { 280, "x-mac-icelandic",                               10079,  no }, /* MICROSOFT */
950   { 281, "x-mac-japanese",                                10001,  no }, /* MICROSOFT */
951   { 282, "x-mac-korean",                                  10003,  no }, /* MICROSOFT */
952   { 283, "x-mac-turkish",                                 10081,  no }, /* MICROSOFT */
953 
954   /* final entry */
955   {   0, NULL,                                                0,  no }
956 };
957 
TY_(GetEncodingIdFromName)958 uint TY_(GetEncodingIdFromName)(ctmbstr name)
959 {
960     uint i;
961 
962     for (i = 0; charsetInfo[i].id; ++i)
963         if (TY_(tmbstrcasecmp)(name, charsetInfo[i].charset) == 0)
964             return charsetInfo[i].id;
965 
966     return 0;
967 }
968 
TY_(GetEncodingIdFromCodePage)969 uint TY_(GetEncodingIdFromCodePage)(uint cp)
970 {
971     uint i;
972 
973     for (i = 0; charsetInfo[i].id; ++i)
974         if (cp == charsetInfo[i].codepage)
975             return charsetInfo[i].id;
976 
977     return 0;
978 }
979 
TY_(GetEncodingCodePageFromName)980 uint TY_(GetEncodingCodePageFromName)(ctmbstr name)
981 {
982     uint i;
983 
984     for (i = 0; charsetInfo[i].id; ++i)
985         if (TY_(tmbstrcasecmp)(name, charsetInfo[i].charset) == 0)
986             return charsetInfo[i].codepage;
987 
988     return 0;
989 }
990 
TY_(GetEncodingCodePageFromId)991 uint TY_(GetEncodingCodePageFromId)(uint id)
992 {
993     uint i;
994 
995     for (i = 0; charsetInfo[i].id; ++i)
996         if (id == charsetInfo[i].id)
997             return charsetInfo[i].codepage;
998 
999     return 0;
1000 }
1001 
TY_(GetEncodingNameFromId)1002 ctmbstr TY_(GetEncodingNameFromId)(uint id)
1003 {
1004     uint i;
1005 
1006     for (i = 0; charsetInfo[i].id; ++i)
1007         if (id == charsetInfo[i].id)
1008             return charsetInfo[i].charset;
1009 
1010     return NULL;
1011 }
1012 
TY_(GetEncodingNameFromCodePage)1013 ctmbstr TY_(GetEncodingNameFromCodePage)(uint cp)
1014 {
1015     uint i;
1016 
1017     for (i = 0; charsetInfo[i].id; ++i)
1018         if (cp == charsetInfo[i].codepage)
1019             return charsetInfo[i].charset;
1020 
1021     return NULL;
1022 }
1023 
1024 /*
1025  * local variables:
1026  * mode: c
1027  * indent-tabs-mode: nil
1028  * c-basic-offset: 4
1029  * eval: (c-set-offset 'substatement-open 0)
1030  * end:
1031  */
1032