1 /*
2 
3   Copyright (c) 2005-2013 uim Project https://github.com/uim/uim
4 
5   All rights reserved.
6 
7   Redistribution and use in source and binary forms, with or without
8   modification, are permitted provided that the following conditions
9   are met:
10 
11   1. Redistributions of source code must retain the above copyright
12      notice, this list of conditions and the following disclaimer.
13   2. Redistributions in binary form must reproduce the above copyright
14      notice, this list of conditions and the following disclaimer in the
15      documentation and/or other materials provided with the distribution.
16   3. Neither the name of authors nor the names of its contributors
17      may be used to endorse or promote products derived from this software
18      without specific prior written permission.
19 
20   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
21   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
24   FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30   SUCH DAMAGE.
31 
32 */
33 
34 /*
35  * Mostly from http://www.openi18n.org/subgroups/sa/locnameguide/final/CodesetAliasTable.html
36  */
37 static const char *alias_us[] = {
38   "US-ASCII", "ANSI_X3.4-1968", "ASCII", "CP367", "cp367", "IBM367",
39   "ISO-IR-6", "ISO646-US", "ISO-646-US", "ANSI_X3.4-1986", "iso-ir-6",
40   "ISO_646.irv:1991", "us", "csASCII", "646",
41   NULL
42 };
43 static const char *alias_big5[] = {
44   "Big5", "TCA-BIG5", "BIG5", "BIG5-CP950", "csBig5", "big5",
45   NULL
46 };
47 static const char *alias_hkscs[] = {
48   "Big5-HKSCS", "HKSCS-BIG5", "BIG5-HKSCS", "BIG5HKSCS", "big5hk",
49   "big5-hkscs:unicode 3.0",
50   NULL
51 };
52 static const char *alias_eucjp[] = {
53   "EUC-JIS-2004", "EUC-JISX0213",
54   "EUC-JP", "eucJP", "ujis",
55   "Extended_UNIX_Code_Packed_Format_for_Japanese", "euc-jp",
56   "csEUCPkdFmtJapanese",
57   NULL
58 };
59 static const char *alias_utf8[] = {
60   "UTF-8", "utf-8", "unicode-1-utf-8", "utf8", "UTF8",
61   NULL
62 };
63 static const char *alias_euckr[] = {
64   "EUC-KR", "csEUCKR", "5601", "ksc-5601", "ksc-5601-1987",
65   "ksc-5601_1987", "ksc5601",
66   NULL
67 };
68 static const char *alias_euctw[] = {
69   "EUC-TW", "cns11643", "ibm-euctw",
70   NULL
71 };
72 static const char *alias_gb18030[] = {
73   "GB-18030", "GB18030", "ibm1392", "ibm-1392", "gb18030-2000",
74   NULL
75 };
76 static const char *alias_gb2312[] = {
77   "GB2312", "GB-2312", "csGB2312", "EUC_CN", "gb2312-80",
78   "gb2312-1980", "euccn", "euc-cn",
79   NULL
80 };
81 static const char *alias_gbk[] = {
82   "GB-K", "GBK",
83   NULL
84 };
85 static const char *alias_iso88591[] = {
86   "ISO-8859-1", "ISO-IR-100", "ISO_8859-1:1987", "ISO_8859-1",
87   "LATIN1", "L1", "latin1", "l1", "IBM819", "CP819", "csISOLatin1"
88   "819", "iso8859-1", "8859-1", "iso8859_1", "iso_8859_1",
89   NULL
90 };
91 static const char *alias_iso88592[] = {
92   "ISO-8859-2", "ISO-IR-101", "ISO_8859-2:1987", "ISO_8859-2",
93   "LATIN2", "L2", "csISOLatin2", "912", "cp912", "ibm-912", "ibm912",
94   "iso8859-2", "8859-2", "iso8859_2", "iso_8859_2",
95   NULL
96 };
97 static const char *alias_iso88593[] = {
98   "ISO-8859-3", "ISO-IR-109", "ISO_8859-3:1988", "ISO_8859-3",
99   "LATIN3", "L3", "csISOLatin3", "913", "cp913", "ibm-913", "ibm913",
100   "iso8859-3", "8859-3", "iso8859_3", "iso_8859_3",
101   NULL
102 };
103 static const char *alias_iso88594[] = {
104   "ISO-8859-4", "ISO-IR-110", "ISO_8859-4:1988", "ISO_8859-4",
105   "LATIN4", "L4", "csISOLatin4", "914", "cp914", "ibm-914", "ibm914",
106   "iso8859-4", "8859-4", "iso8859_4", "iso_8859_4",
107   NULL
108 };
109 static const char *alias_iso88595[] = {
110   "ISO-8859-5", "ISO-IR-144", "ISO_8859-5:1988", "ISO_8859-5",
111   "CYRILLIC", "csISOLatinCyrillic", "915", "cp915", "ibm-915",
112   "ibm915", "iso8859-5", "8859-5", "iso8859_5", "iso_8859_5",
113   NULL
114 };
115 static const char *alias_iso88596[] = {
116   "ISO-8859-6", "ISO-IR-127", "ISO_8859-6:1987", "ISO_8859-6",
117   "ECMA-114", "ASMO-708", "ARABIC", "csISOLatinArabic", "1089",
118   "cp1089", "ibm-1089", "ibm1089", "iso8859-6", "8859-6", "iso8859_6",
119   "iso_8859_6",
120   NULL
121 };
122 static const char *alias_iso88597[] = {
123   "ISO-8859-7", "ISO-IR-126", "ISO_8859-7:1987", "ISO_8859-7",
124   "ELOT_928", "ECMA-118", "greek", "greek8", "csISOLatinGreek", "813",
125   "cp813", "ibm-813", "ibm813", "iso8859-7", "8859-7", "iso8859_7",
126   "iso_8859_7",
127   NULL
128 };
129 static const char *alias_iso88598[] = {
130   "ISO-8859-8", "ISO-IR-138", "ISO_8859-8:1988", "ISO_8859-8",
131   "hebrew", "csISOLatinHebrew", "916", "cp916", "ibm-916", "ibm916",
132   "iso8859-8", "8859-8", "iso8859_8", "iso_8859_8",
133   NULL
134 };
135 static const char *alias_iso88599[] = {
136   "ISO-8859-9", "ISO-IR-148", "ISO_8859-9:1989", "ISO_8859-9",
137   "latin5", "l5", "csISOLatin5", "920", "cp920", "ibm-920", "ibm920",
138   "iso8859-9", "8859-9", "iso8859_9", "iso_8859_9",
139   NULL
140 };
141 static const char *alias_iso885913[] = {
142   "ISO-8859-13", "ISO-IR-179", "LATIN7", "L7", "iso_8859-13",
143   "iso8859-13", "8859-13", "iso8859_13", "iso_8859_13",
144   NULL
145 };
146 static const char *alias_iso885914[] = {
147   "ISO-8859-14", "LATIN8", "L8", "ISO-8859-14", "iso-ir-199",
148   "ISO_8859-14:1998", "ISO_8859-14", "iso-celtic",
149   NULL
150 };
151 static const char *alias_iso885915[] = {
152   "ISO-8859-15", "csisolatin9", "csisolatin0", "latin9", "latin0",
153   "923", "cp923", "ibm-923", "ibm923", "iso8859-15", "iso_8859-15",
154   "8859-15", "iso_8859-15_FDIS", "L9",
155   NULL
156 };
157 static const char *alias_iso885916[] = {
158   "ISO-8859-16", "ISO-IR-226", "LATIN10", "L10",
159   NULL
160 };
161 static const char *alias_koi8r[] = {
162   "KOI8-R", "csKOI8R", "koi8",
163   NULL
164 };
165 static const char *alias_koi8u[] = {
166   "KOI-8-U",
167   NULL
168 };
169 static const char *alias_koi8t[] = {
170   "KOI-8-T",
171   NULL
172 };
173 static const char *alias_sjis[] = {
174   "Shift_JIS", "SHIFT-JIS", "SHIFTJIS", "SJIS", "sjis", "MS_Kanji",
175   "csShiftJIS", "pck", "PCK",
176   NULL
177 };
178 static const char *alias_viscii[] = {
179   "VISCII",
180   NULL
181 };
182 static const char *alias_cp437[] = {
183   "CP-437", "IBM437", "CP437", "437", "csPC8CodePage437", "ibm-437",
184   NULL
185 };
186 static const char *alias_cp850[] = {
187   "CP-850", "IBM850", "cp850", "850", "csPC850Multilingual",
188   "ibm-850",
189   NULL
190 };
191 static const char *alias_cp851[] = {
192   "CP-851", "IBM851", "cp851", "851", "csIBM851",
193   NULL
194 };
195 static const char *alias_cp852[] = {
196   "CP-852", "IBM852", "cp852", "852", "csPCp852", "ibm-852",
197   NULL
198 };
199 static const char *alias_cp855[] = {
200   "CP-855", "IBM855", "cp855", "855", "csIBM855", "cspcp855",
201   "ibm-855",
202   NULL
203 };
204 static const char *alias_cp857[] = {
205   "CP-857", "IBM857", "cp857", "857", "csIBM857", "ibm-857",
206   NULL
207 };
208 static const char *alias_cp860[] = {
209   "CP-860", "IBM860", "cp860", "860", "csIBM860", "ibm-860",
210   NULL
211 };
212 static const char *alias_cp861[] = {
213   "CP-861", "IBM861", "cp861", "861", "cp-is", "csIBM861", "ibm-861",
214   NULL
215 };
216 static const char *alias_cp862[] = {
217   "CP-862", "IBM862", "cp862", "862", "csPC862LatinHebrew", "ibm-862",
218   NULL
219 };
220 static const char *alias_cp863[] = {
221   "CP-863", "IBM863", "cp863", "863", "csIBM863", "ibm-863",
222   NULL
223 };
224 static const char *alias_cp864[] = {
225   "CP-864", "IBM864", "cp864", "csIBM864", "ibm-864",
226   NULL
227 };
228 static const char *alias_cp865[] = {
229   "CP-865", "IBM865", "cp865", "865", "csIBM865", "ibm-865",
230   NULL
231 };
232 static const char *alias_cp866[] = {
233   "CP-866", "IBM866", "cp866", "866", "csIBM866", "ibm-866",
234   NULL
235 };
236 static const char *alias_cp868[] = {
237   "CP-868", "IBM868", "CP868", "cp-ar", "csIBM868", "ibm-868",
238   NULL
239 };
240 static const char *alias_cp869[] = {
241   "CP-869", "IBM869", "cp869", "869", "cp-gr", "csIBM869",
242   NULL
243 };
244 static const char *alias_cp891[] = {
245   "CP-891", "IBM891", "cp891", "csIBM891",
246   NULL
247 };
248 static const char *alias_cp903[] = {
249   "CP-903", "IBM903", "cp903", "csIBM903",
250   NULL
251 };
252 static const char *alias_cp904[] = {
253   "CP-904", "IBM904", "cp904", "904", "csIBM904",
254   NULL
255 };
256 static const char *alias_cp1251[] = {
257   "CP-1251", "CP1251", "MS-CYRL", "windows-1251", "Cp1251",
258   NULL
259 };
260 static const char *alias_cp1255[] = {
261   "CP-1255", "CP1255", "MS-HEBR", "windows-1255",
262   NULL
263 };
264 static const char *alias_tis620[] = {
265   "TIS-620", "TIS620", "TIS620-0", "TIS620.2529-1", "TIS620.2533-0",
266   "ISO-IR-166", "TIS620.2533",
267   NULL
268 };
269 static const char *alias_georgianps[] = {
270   "GEORGIAN-PS",
271   NULL
272 };
273 
274 static const char **uim_encoding_list[] = {
275   alias_us,
276   alias_big5,
277   alias_hkscs,
278   alias_eucjp,
279   alias_utf8,
280   alias_euckr,
281   alias_euctw,
282   alias_gb18030,
283   alias_gb2312,
284   alias_gbk,
285   alias_iso88591,
286   alias_iso88592,
287   alias_iso88593,
288   alias_iso88594,
289   alias_iso88595,
290   alias_iso88596,
291   alias_iso88597,
292   alias_iso88598,
293   alias_iso88599,
294   alias_iso885913,
295   alias_iso885914,
296   alias_iso885915,
297   alias_iso885916,
298   alias_koi8r,
299   alias_koi8u,
300   alias_koi8t,
301   alias_sjis,
302   alias_viscii,
303   alias_cp437,
304   alias_cp850,
305   alias_cp851,
306   alias_cp852,
307   alias_cp855,
308   alias_cp857,
309   alias_cp860,
310   alias_cp861,
311   alias_cp862,
312   alias_cp863,
313   alias_cp864,
314   alias_cp865,
315   alias_cp866,
316   alias_cp868,
317   alias_cp869,
318   alias_cp891,
319   alias_cp903,
320   alias_cp904,
321   alias_cp1251,
322   alias_cp1255,
323   alias_tis620,
324   alias_georgianps,
325   NULL
326 };
327