aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/iconv.c913
1 files changed, 457 insertions, 456 deletions
diff --git a/miscutils/iconv.c b/miscutils/iconv.c
index c3289982d..ce0b2087c 100644
--- a/miscutils/iconv.c
+++ b/miscutils/iconv.c
@@ -132,458 +132,448 @@ static int iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort
132static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); 132static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize);
133static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize); 133static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize);
134 134
135static struct { 135#define CP_ALIAS_LIST \
136 int codepage; 136 CP_ALIAS(65001, "CP65001") \
137 const char *name; 137 CP_ALIAS(65001, "UTF8") \
138} codepage_alias[] = { 138 CP_ALIAS(65001, "UTF-8") \
139 {65001, "CP65001"}, 139\
140 {65001, "UTF8"}, 140 CP_ALIAS(1200, "CP1200") \
141 {65001, "UTF-8"}, 141 CP_ALIAS(1200, "UTF16LE") \
142 142 CP_ALIAS(1200, "UTF-16LE") \
143 {1200, "CP1200"}, 143 CP_ALIAS(1200, "UCS2LE") \
144 {1200, "UTF16LE"}, 144 CP_ALIAS(1200, "UCS-2LE") \
145 {1200, "UTF-16LE"}, 145 CP_ALIAS(1200, "UCS-2-INTERNAL") \
146 {1200, "UCS2LE"}, 146\
147 {1200, "UCS-2LE"}, 147 CP_ALIAS(1201, "CP1201") \
148 {1200, "UCS-2-INTERNAL"}, 148 CP_ALIAS(1201, "UTF16BE") \
149 149 CP_ALIAS(1201, "UTF-16BE") \
150 {1201, "CP1201"}, 150 CP_ALIAS(1201, "UCS2BE") \
151 {1201, "UTF16BE"}, 151 CP_ALIAS(1201, "UCS-2BE") \
152 {1201, "UTF-16BE"}, 152 CP_ALIAS(1201, "unicodeFFFE") \
153 {1201, "UCS2BE"}, 153\
154 {1201, "UCS-2BE"}, 154 CP_ALIAS(12000, "CP12000") \
155 {1201, "unicodeFFFE"}, 155 CP_ALIAS(12000, "UTF32LE") \
156 156 CP_ALIAS(12000, "UTF-32LE") \
157 {12000, "CP12000"}, 157 CP_ALIAS(12000, "UCS4LE") \
158 {12000, "UTF32LE"}, 158 CP_ALIAS(12000, "UCS-4LE") \
159 {12000, "UTF-32LE"}, 159\
160 {12000, "UCS4LE"}, 160 CP_ALIAS(12001, "CP12001") \
161 {12000, "UCS-4LE"}, 161 CP_ALIAS(12001, "UTF32BE") \
162 162 CP_ALIAS(12001, "UTF-32BE") \
163 {12001, "CP12001"}, 163 CP_ALIAS(12001, "UCS4BE") \
164 {12001, "UTF32BE"}, 164 CP_ALIAS(12001, "UCS-4BE") \
165 {12001, "UTF-32BE"}, 165\
166 {12001, "UCS4BE"}, 166 /* Default is little endian, because the platform is */ \
167 {12001, "UCS-4BE"}, 167 CP_ALIAS(1200, "UTF16") \
168 168 CP_ALIAS(1200, "UTF-16") \
169#ifndef GLIB_COMPILATION 169 CP_ALIAS(1200, "UCS2") \
170 /* 170 CP_ALIAS(1200, "UCS-2") \
171 * Default is big endian. 171 CP_ALIAS(12000, "UTF32") \
172 * See rfc2781 4.3 Interpreting text labelled as UTF-16. 172 CP_ALIAS(12000, "UTF-32") \
173 */ 173 CP_ALIAS(12000, "UCS4") \
174 {1201, "UTF16"}, 174 CP_ALIAS(12000, "UCS-4") \
175 {1201, "UTF-16"}, 175\
176 {1201, "UCS2"}, 176 /* copy from libiconv `iconv -l` */ \
177 {1201, "UCS-2"}, 177 /* !IsValidCodePage(367) */ \
178 {12001, "UTF32"}, 178 CP_ALIAS(20127, "ANSI_X3.4-1968") \
179 {12001, "UTF-32"}, 179 CP_ALIAS(20127, "ANSI_X3.4-1986") \
180 {12001, "UCS-4"}, 180 CP_ALIAS(20127, "ASCII") \
181 {12001, "UCS4"}, 181 CP_ALIAS(20127, "CP367") \
182#else 182 CP_ALIAS(20127, "IBM367") \
183 /* Default is little endian, because the platform is */ 183 CP_ALIAS(20127, "ISO-IR-6") \
184 {1200, "UTF16"}, 184 CP_ALIAS(20127, "ISO646-US") \
185 {1200, "UTF-16"}, 185 CP_ALIAS(20127, "ISO_646.IRV:1991") \
186 {1200, "UCS2"}, 186 CP_ALIAS(20127, "US") \
187 {1200, "UCS-2"}, 187 CP_ALIAS(20127, "US-ASCII") \
188 {12000, "UTF32"}, 188 CP_ALIAS(20127, "CSASCII") \
189 {12000, "UTF-32"}, 189\
190 {12000, "UCS4"}, 190 /* !IsValidCodePage(819) */ \
191 {12000, "UCS-4"}, 191 CP_ALIAS(1252, "CP819") \
192#endif 192 CP_ALIAS(1252, "IBM819") \
193 193 CP_ALIAS(28591, "ISO-8859-1") \
194 /* copy from libiconv `iconv -l` */ 194 CP_ALIAS(28591, "ISO-IR-100") \
195 /* !IsValidCodePage(367) */ 195 CP_ALIAS(28591, "ISO8859-1") \
196 {20127, "ANSI_X3.4-1968"}, 196 CP_ALIAS(28591, "ISO_8859-1") \
197 {20127, "ANSI_X3.4-1986"}, 197 CP_ALIAS(28591, "ISO_8859-1:1987") \
198 {20127, "ASCII"}, 198 CP_ALIAS(28591, "L1") \
199 {20127, "CP367"}, 199 CP_ALIAS(28591, "LATIN1") \
200 {20127, "IBM367"}, 200 CP_ALIAS(28591, "CSISOLATIN1") \
201 {20127, "ISO-IR-6"}, 201\
202 {20127, "ISO646-US"}, 202 CP_ALIAS(1250, "CP1250") \
203 {20127, "ISO_646.IRV:1991"}, 203 CP_ALIAS(1250, "MS-EE") \
204 {20127, "US"}, 204 CP_ALIAS(1250, "WINDOWS-1250") \
205 {20127, "US-ASCII"}, 205\
206 {20127, "CSASCII"}, 206 CP_ALIAS(1251, "CP1251") \
207 207 CP_ALIAS(1251, "MS-CYRL") \
208 /* !IsValidCodePage(819) */ 208 CP_ALIAS(1251, "WINDOWS-1251") \
209 {1252, "CP819"}, 209\
210 {1252, "IBM819"}, 210 CP_ALIAS(1252, "CP1252") \
211 {28591, "ISO-8859-1"}, 211 CP_ALIAS(1252, "MS-ANSI") \
212 {28591, "ISO-IR-100"}, 212 CP_ALIAS(1252, "WINDOWS-1252") \
213 {28591, "ISO8859-1"}, 213\
214 {28591, "ISO_8859-1"}, 214 CP_ALIAS(1253, "CP1253") \
215 {28591, "ISO_8859-1:1987"}, 215 CP_ALIAS(1253, "MS-GREEK") \
216 {28591, "L1"}, 216 CP_ALIAS(1253, "WINDOWS-1253") \
217 {28591, "LATIN1"}, 217\
218 {28591, "CSISOLATIN1"}, 218 CP_ALIAS(1254, "CP1254") \
219 219 CP_ALIAS(1254, "MS-TURK") \
220 {1250, "CP1250"}, 220 CP_ALIAS(1254, "WINDOWS-1254") \
221 {1250, "MS-EE"}, 221\
222 {1250, "WINDOWS-1250"}, 222 CP_ALIAS(1255, "CP1255") \
223 223 CP_ALIAS(1255, "MS-HEBR") \
224 {1251, "CP1251"}, 224 CP_ALIAS(1255, "WINDOWS-1255") \
225 {1251, "MS-CYRL"}, 225\
226 {1251, "WINDOWS-1251"}, 226 CP_ALIAS(1256, "CP1256") \
227 227 CP_ALIAS(1256, "MS-ARAB") \
228 {1252, "CP1252"}, 228 CP_ALIAS(1256, "WINDOWS-1256") \
229 {1252, "MS-ANSI"}, 229\
230 {1252, "WINDOWS-1252"}, 230 CP_ALIAS(1257, "CP1257") \
231 231 CP_ALIAS(1257, "WINBALTRIM") \
232 {1253, "CP1253"}, 232 CP_ALIAS(1257, "WINDOWS-1257") \
233 {1253, "MS-GREEK"}, 233\
234 {1253, "WINDOWS-1253"}, 234 CP_ALIAS(1258, "CP1258") \
235 235 CP_ALIAS(1258, "WINDOWS-1258") \
236 {1254, "CP1254"}, 236\
237 {1254, "MS-TURK"}, 237 CP_ALIAS(850, "850") \
238 {1254, "WINDOWS-1254"}, 238 CP_ALIAS(850, "CP850") \
239 239 CP_ALIAS(850, "IBM850") \
240 {1255, "CP1255"}, 240 CP_ALIAS(850, "CSPC850MULTILINGUAL") \
241 {1255, "MS-HEBR"}, 241\
242 {1255, "WINDOWS-1255"}, 242 /* !IsValidCodePage(862) */ \
243 243 CP_ALIAS(862, "862") \
244 {1256, "CP1256"}, 244 CP_ALIAS(862, "CP862") \
245 {1256, "MS-ARAB"}, 245 CP_ALIAS(862, "IBM862") \
246 {1256, "WINDOWS-1256"}, 246 CP_ALIAS(862, "CSPC862LATINHEBREW") \
247 247\
248 {1257, "CP1257"}, 248 CP_ALIAS(866, "866") \
249 {1257, "WINBALTRIM"}, 249 CP_ALIAS(866, "CP866") \
250 {1257, "WINDOWS-1257"}, 250 CP_ALIAS(866, "IBM866") \
251 251 CP_ALIAS(866, "CSIBM866") \
252 {1258, "CP1258"}, 252\
253 {1258, "WINDOWS-1258"}, 253 /* !IsValidCodePage(154) */ \
254 254 CP_ALIAS(154, "CP154") \
255 {850, "850"}, 255 CP_ALIAS(154, "CYRILLIC-ASIAN") \
256 {850, "CP850"}, 256 CP_ALIAS(154, "PT154") \
257 {850, "IBM850"}, 257 CP_ALIAS(154, "PTCP154") \
258 {850, "CSPC850MULTILINGUAL"}, 258 CP_ALIAS(154, "CSPTCP154") \
259 259\
260 /* !IsValidCodePage(862) */ 260 /* !IsValidCodePage(1133) */ \
261 {862, "862"}, 261 CP_ALIAS(1133, "CP1133") \
262 {862, "CP862"}, 262 CP_ALIAS(1133, "IBM-CP1133") \
263 {862, "IBM862"}, 263\
264 {862, "CSPC862LATINHEBREW"}, 264 CP_ALIAS(874, "CP874") \
265 265 CP_ALIAS(874, "WINDOWS-874") \
266 {866, "866"}, 266\
267 {866, "CP866"}, 267 /* !IsValidCodePage(51932) */ \
268 {866, "IBM866"}, 268 CP_ALIAS(51932, "CP51932") \
269 {866, "CSIBM866"}, 269 CP_ALIAS(51932, "MS51932") \
270 270 CP_ALIAS(51932, "WINDOWS-51932") \
271 /* !IsValidCodePage(154) */ 271 CP_ALIAS(51932, "EUC-JP") \
272 {154, "CP154"}, 272\
273 {154, "CYRILLIC-ASIAN"}, 273 CP_ALIAS(932, "CP932") \
274 {154, "PT154"}, 274 CP_ALIAS(932, "MS932") \
275 {154, "PTCP154"}, 275 CP_ALIAS(932, "SHIFFT_JIS") \
276 {154, "CSPTCP154"}, 276 CP_ALIAS(932, "SHIFFT_JIS-MS") \
277 277 CP_ALIAS(932, "SJIS") \
278 /* !IsValidCodePage(1133) */ 278 CP_ALIAS(932, "SJIS-MS") \
279 {1133, "CP1133"}, 279 CP_ALIAS(932, "SJIS-OPEN") \
280 {1133, "IBM-CP1133"}, 280 CP_ALIAS(932, "SJIS-WIN") \
281 281 CP_ALIAS(932, "WINDOWS-31J") \
282 {874, "CP874"}, 282 CP_ALIAS(932, "WINDOWS-932") \
283 {874, "WINDOWS-874"}, 283 CP_ALIAS(932, "CSWINDOWS31J") \
284 284\
285 /* !IsValidCodePage(51932) */ 285 CP_ALIAS(50221, "CP50221") \
286 {51932, "CP51932"}, 286 CP_ALIAS(50221, "ISO-2022-JP") \
287 {51932, "MS51932"}, 287 CP_ALIAS(50221, "ISO-2022-JP-MS") \
288 {51932, "WINDOWS-51932"}, 288 CP_ALIAS(50221, "ISO2022-JP") \
289 {51932, "EUC-JP"}, 289 CP_ALIAS(50221, "ISO2022-JP-MS") \
290 290 CP_ALIAS(50221, "MS50221") \
291 {932, "CP932"}, 291 CP_ALIAS(50221, "WINDOWS-50221") \
292 {932, "MS932"}, 292\
293 {932, "SHIFFT_JIS"}, 293 CP_ALIAS(936, "CP936") \
294 {932, "SHIFFT_JIS-MS"}, 294 CP_ALIAS(936, "GBK") \
295 {932, "SJIS"}, 295 CP_ALIAS(936, "MS936") \
296 {932, "SJIS-MS"}, 296 CP_ALIAS(936, "WINDOWS-936") \
297 {932, "SJIS-OPEN"}, 297\
298 {932, "SJIS-WIN"}, 298 CP_ALIAS(950, "CP950") \
299 {932, "WINDOWS-31J"}, 299 CP_ALIAS(950, "BIG5") \
300 {932, "WINDOWS-932"}, 300 CP_ALIAS(950, "BIG5HKSCS") \
301 {932, "CSWINDOWS31J"}, 301 CP_ALIAS(950, "BIG5-HKSCS") \
302 302\
303 {50221, "CP50221"}, 303 CP_ALIAS(949, "CP949") \
304 {50221, "ISO-2022-JP"}, 304 CP_ALIAS(949, "UHC") \
305 {50221, "ISO-2022-JP-MS"}, 305 CP_ALIAS(949, "EUC-KR") \
306 {50221, "ISO2022-JP"}, 306\
307 {50221, "ISO2022-JP-MS"}, 307 CP_ALIAS(1361, "CP1361") \
308 {50221, "MS50221"}, 308 CP_ALIAS(1361, "JOHAB") \
309 {50221, "WINDOWS-50221"}, 309\
310 310 CP_ALIAS(437, "437") \
311 {936, "CP936"}, 311 CP_ALIAS(437, "CP437") \
312 {936, "GBK"}, 312 CP_ALIAS(437, "IBM437") \
313 {936, "MS936"}, 313 CP_ALIAS(437, "CSPC8CODEPAGE437") \
314 {936, "WINDOWS-936"}, 314\
315 315 CP_ALIAS(737, "CP737") \
316 {950, "CP950"}, 316\
317 {950, "BIG5"}, 317 CP_ALIAS(775, "CP775") \
318 {950, "BIG5HKSCS"}, 318 CP_ALIAS(775, "IBM775") \
319 {950, "BIG5-HKSCS"}, 319 CP_ALIAS(775, "CSPC775BALTIC") \
320 320\
321 {949, "CP949"}, 321 CP_ALIAS(852, "852") \
322 {949, "UHC"}, 322 CP_ALIAS(852, "CP852") \
323 {949, "EUC-KR"}, 323 CP_ALIAS(852, "IBM852") \
324 324 CP_ALIAS(852, "CSPCP852") \
325 {1361, "CP1361"}, 325\
326 {1361, "JOHAB"}, 326 /* !IsValidCodePage(853) */ \
327 327 CP_ALIAS(853, "CP853") \
328 {437, "437"}, 328\
329 {437, "CP437"}, 329 CP_ALIAS(855, "855") \
330 {437, "IBM437"}, 330 CP_ALIAS(855, "CP855") \
331 {437, "CSPC8CODEPAGE437"}, 331 CP_ALIAS(855, "IBM855") \
332 332 CP_ALIAS(855, "CSIBM855") \
333 {737, "CP737"}, 333\
334 334 CP_ALIAS(857, "857") \
335 {775, "CP775"}, 335 CP_ALIAS(857, "CP857") \
336 {775, "IBM775"}, 336 CP_ALIAS(857, "IBM857") \
337 {775, "CSPC775BALTIC"}, 337 CP_ALIAS(857, "CSIBM857") \
338 338\
339 {852, "852"}, 339 /* !IsValidCodePage(858) */ \
340 {852, "CP852"}, 340 CP_ALIAS(858, "CP858") \
341 {852, "IBM852"}, 341\
342 {852, "CSPCP852"}, 342 CP_ALIAS(860, "860") \
343 343 CP_ALIAS(860, "CP860") \
344 /* !IsValidCodePage(853) */ 344 CP_ALIAS(860, "IBM860") \
345 {853, "CP853"}, 345 CP_ALIAS(860, "CSIBM860") \
346 346\
347 {855, "855"}, 347 CP_ALIAS(861, "861") \
348 {855, "CP855"}, 348 CP_ALIAS(861, "CP-IS") \
349 {855, "IBM855"}, 349 CP_ALIAS(861, "CP861") \
350 {855, "CSIBM855"}, 350 CP_ALIAS(861, "IBM861") \
351 351 CP_ALIAS(861, "CSIBM861") \
352 {857, "857"}, 352\
353 {857, "CP857"}, 353 CP_ALIAS(863, "863") \
354 {857, "IBM857"}, 354 CP_ALIAS(863, "CP863") \
355 {857, "CSIBM857"}, 355 CP_ALIAS(863, "IBM863") \
356 356 CP_ALIAS(863, "CSIBM863") \
357 /* !IsValidCodePage(858) */ 357\
358 {858, "CP858"}, 358 CP_ALIAS(864, "CP864") \
359 359 CP_ALIAS(864, "IBM864") \
360 {860, "860"}, 360 CP_ALIAS(864, "CSIBM864") \
361 {860, "CP860"}, 361\
362 {860, "IBM860"}, 362 CP_ALIAS(865, "865") \
363 {860, "CSIBM860"}, 363 CP_ALIAS(865, "CP865") \
364 364 CP_ALIAS(865, "IBM865") \
365 {861, "861"}, 365 CP_ALIAS(865, "CSIBM865") \
366 {861, "CP-IS"}, 366\
367 {861, "CP861"}, 367 CP_ALIAS(869, "869") \
368 {861, "IBM861"}, 368 CP_ALIAS(869, "CP-GR") \
369 {861, "CSIBM861"}, 369 CP_ALIAS(869, "CP869") \
370 370 CP_ALIAS(869, "IBM869") \
371 {863, "863"}, 371 CP_ALIAS(869, "CSIBM869") \
372 {863, "CP863"}, 372\
373 {863, "IBM863"}, 373 /* !IsValidCodePage(1152) */ \
374 {863, "CSIBM863"}, 374 CP_ALIAS(1125, "CP1125") \
375 375\
376 {864, "CP864"}, 376 /* \
377 {864, "IBM864"}, 377 * Code Page Identifiers \
378 {864, "CSIBM864"}, 378 * http://msdn2.microsoft.com/en-us/library/ms776446.aspx \
379 379 */ \
380 {865, "865"}, 380 CP_ALIAS(37, "IBM037") /* IBM EBCDIC US-Canada */ \
381 {865, "CP865"}, 381 CP_ALIAS(437, "IBM437") /* OEM United States */ \
382 {865, "IBM865"}, 382 CP_ALIAS(500, "IBM500") /* IBM EBCDIC International */ \
383 {865, "CSIBM865"}, 383 CP_ALIAS(708, "ASMO-708") /* Arabic (ASMO 708) */ \
384 384 /* 709 Arabic (ASMO-449+, BCON V4) */ \
385 {869, "869"}, 385 /* 710 Arabic - Transparent Arabic */ \
386 {869, "CP-GR"}, 386 CP_ALIAS(720, "DOS-720") /* Arabic (Transparent ASMO); Arabic (DOS) */ \
387 {869, "CP869"}, 387 CP_ALIAS(737, "ibm737") /* OEM Greek (formerly 437G); Greek (DOS) */ \
388 {869, "IBM869"}, 388 CP_ALIAS(775, "ibm775") /* OEM Baltic; Baltic (DOS) */ \
389 {869, "CSIBM869"}, 389 CP_ALIAS(850, "ibm850") /* OEM Multilingual Latin 1; Western European (DOS) */ \
390 390 CP_ALIAS(852, "ibm852") /* OEM Latin 2; Central European (DOS) */ \
391 /* !IsValidCodePage(1152) */ 391 CP_ALIAS(855, "IBM855") /* OEM Cyrillic (primarily Russian) */ \
392 {1125, "CP1125"}, 392 CP_ALIAS(857, "ibm857") /* OEM Turkish; Turkish (DOS) */ \
393 393 CP_ALIAS(858, "IBM00858") /* OEM Multilingual Latin 1 + Euro symbol */ \
394 /* 394 CP_ALIAS(860, "IBM860") /* OEM Portuguese; Portuguese (DOS) */ \
395 * Code Page Identifiers 395 CP_ALIAS(861, "ibm861") /* OEM Icelandic; Icelandic (DOS) */ \
396 * http://msdn2.microsoft.com/en-us/library/ms776446.aspx 396 CP_ALIAS(862, "DOS-862") /* OEM Hebrew; Hebrew (DOS) */ \
397 */ 397 CP_ALIAS(863, "IBM863") /* OEM French Canadian; French Canadian (DOS) */ \
398 {37, "IBM037"}, /* IBM EBCDIC US-Canada */ 398 CP_ALIAS(864, "IBM864") /* OEM Arabic; Arabic (864) */ \
399 {437, "IBM437"}, /* OEM United States */ 399 CP_ALIAS(865, "IBM865") /* OEM Nordic; Nordic (DOS) */ \
400 {500, "IBM500"}, /* IBM EBCDIC International */ 400 CP_ALIAS(866, "cp866") /* OEM Russian; Cyrillic (DOS) */ \
401 {708, "ASMO-708"}, /* Arabic (ASMO 708) */ 401 CP_ALIAS(869, "ibm869") /* OEM Modern Greek; Greek, Modern (DOS) */ \
402 /* 709 Arabic (ASMO-449+, BCON V4) */ 402 CP_ALIAS(870, "IBM870") /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ \
403 /* 710 Arabic - Transparent Arabic */ 403 CP_ALIAS(874, "windows-874") /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ \
404 {720, "DOS-720"}, /* Arabic (Transparent ASMO); Arabic (DOS) */ 404 CP_ALIAS(875, "cp875") /* IBM EBCDIC Greek Modern */ \
405 {737, "ibm737"}, /* OEM Greek (formerly 437G); Greek (DOS) */ 405 CP_ALIAS(932, "shift_jis") /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ \
406 {775, "ibm775"}, /* OEM Baltic; Baltic (DOS) */ 406 CP_ALIAS(932, "shift-jis") /* alternative name for it */ \
407 {850, "ibm850"}, /* OEM Multilingual Latin 1; Western European (DOS) */ 407 CP_ALIAS(936, "gb2312") /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ \
408 {852, "ibm852"}, /* OEM Latin 2; Central European (DOS) */ 408 CP_ALIAS(949, "ks_c_5601-1987") /* ANSI/OEM Korean (Unified Hangul Code) */ \
409 {855, "IBM855"}, /* OEM Cyrillic (primarily Russian) */ 409 CP_ALIAS(950, "big5") /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ \
410 {857, "ibm857"}, /* OEM Turkish; Turkish (DOS) */ 410 CP_ALIAS(950, "big5hkscs") /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */ \
411 {858, "IBM00858"}, /* OEM Multilingual Latin 1 + Euro symbol */ 411 CP_ALIAS(950, "big5-hkscs") /* alternative name for it */ \
412 {860, "IBM860"}, /* OEM Portuguese; Portuguese (DOS) */ 412 CP_ALIAS(1026, "IBM1026") /* IBM EBCDIC Turkish (Latin 5) */ \
413 {861, "ibm861"}, /* OEM Icelandic; Icelandic (DOS) */ 413 CP_ALIAS(1047, "IBM01047") /* IBM EBCDIC Latin 1/Open System */ \
414 {862, "DOS-862"}, /* OEM Hebrew; Hebrew (DOS) */ 414 CP_ALIAS(1140, "IBM01140") /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ \
415 {863, "IBM863"}, /* OEM French Canadian; French Canadian (DOS) */ 415 CP_ALIAS(1141, "IBM01141") /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ \
416 {864, "IBM864"}, /* OEM Arabic; Arabic (864) */ 416 CP_ALIAS(1142, "IBM01142") /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ \
417 {865, "IBM865"}, /* OEM Nordic; Nordic (DOS) */ 417 CP_ALIAS(1143, "IBM01143") /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ \
418 {866, "cp866"}, /* OEM Russian; Cyrillic (DOS) */ 418 CP_ALIAS(1144, "IBM01144") /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ \
419 {869, "ibm869"}, /* OEM Modern Greek; Greek, Modern (DOS) */ 419 CP_ALIAS(1145, "IBM01145") /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ \
420 {870, "IBM870"}, /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ 420 CP_ALIAS(1146, "IBM01146") /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ \
421 {874, "windows-874"}, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ 421 CP_ALIAS(1147, "IBM01147") /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ \
422 {875, "cp875"}, /* IBM EBCDIC Greek Modern */ 422 CP_ALIAS(1148, "IBM01148") /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ \
423 {932, "shift_jis"}, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ 423 CP_ALIAS(1149, "IBM01149") /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ \
424 {932, "shift-jis"}, /* alternative name for it */ 424 CP_ALIAS(1250, "windows-1250") /* ANSI Central European; Central European (Windows) */ \
425 {936, "gb2312"}, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ 425 CP_ALIAS(1251, "windows-1251") /* ANSI Cyrillic; Cyrillic (Windows) */ \
426 {949, "ks_c_5601-1987"}, /* ANSI/OEM Korean (Unified Hangul Code) */ 426 CP_ALIAS(1252, "windows-1252") /* ANSI Latin 1; Western European (Windows) */ \
427 {950, "big5"}, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ 427 CP_ALIAS(1253, "windows-1253") /* ANSI Greek; Greek (Windows) */ \
428 {950, "big5hkscs"}, /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */ 428 CP_ALIAS(1254, "windows-1254") /* ANSI Turkish; Turkish (Windows) */ \
429 {950, "big5-hkscs"}, /* alternative name for it */ 429 CP_ALIAS(1255, "windows-1255") /* ANSI Hebrew; Hebrew (Windows) */ \
430 {1026, "IBM1026"}, /* IBM EBCDIC Turkish (Latin 5) */ 430 CP_ALIAS(1256, "windows-1256") /* ANSI Arabic; Arabic (Windows) */ \
431 {1047, "IBM01047"}, /* IBM EBCDIC Latin 1/Open System */ 431 CP_ALIAS(1257, "windows-1257") /* ANSI Baltic; Baltic (Windows) */ \
432 {1140, "IBM01140"}, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ 432 CP_ALIAS(1258, "windows-1258") /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ \
433 {1141, "IBM01141"}, /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ 433 CP_ALIAS(1361, "Johab") /* Korean (Johab) */ \
434 {1142, "IBM01142"}, /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ 434 CP_ALIAS(10000, "macintosh") /* MAC Roman; Western European (Mac) */ \
435 {1143, "IBM01143"}, /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ 435 CP_ALIAS(10001, "x-mac-japanese") /* Japanese (Mac) */ \
436 {1144, "IBM01144"}, /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ 436 CP_ALIAS(10002, "x-mac-chinesetrad") /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ \
437 {1145, "IBM01145"}, /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ 437 CP_ALIAS(10003, "x-mac-korean") /* Korean (Mac) */ \
438 {1146, "IBM01146"}, /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ 438 CP_ALIAS(10004, "x-mac-arabic") /* Arabic (Mac) */ \
439 {1147, "IBM01147"}, /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ 439 CP_ALIAS(10005, "x-mac-hebrew") /* Hebrew (Mac) */ \
440 {1148, "IBM01148"}, /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ 440 CP_ALIAS(10006, "x-mac-greek") /* Greek (Mac) */ \
441 {1149, "IBM01149"}, /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ 441 CP_ALIAS(10007, "x-mac-cyrillic") /* Cyrillic (Mac) */ \
442 {1250, "windows-1250"}, /* ANSI Central European; Central European (Windows) */ 442 CP_ALIAS(10008, "x-mac-chinesesimp") /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ \
443 {1251, "windows-1251"}, /* ANSI Cyrillic; Cyrillic (Windows) */ 443 CP_ALIAS(10010, "x-mac-romanian") /* Romanian (Mac) */ \
444 {1252, "windows-1252"}, /* ANSI Latin 1; Western European (Windows) */ 444 CP_ALIAS(10017, "x-mac-ukrainian") /* Ukrainian (Mac) */ \
445 {1253, "windows-1253"}, /* ANSI Greek; Greek (Windows) */ 445 CP_ALIAS(10021, "x-mac-thai") /* Thai (Mac) */ \
446 {1254, "windows-1254"}, /* ANSI Turkish; Turkish (Windows) */ 446 CP_ALIAS(10029, "x-mac-ce") /* MAC Latin 2; Central European (Mac) */ \
447 {1255, "windows-1255"}, /* ANSI Hebrew; Hebrew (Windows) */ 447 CP_ALIAS(10079, "x-mac-icelandic") /* Icelandic (Mac) */ \
448 {1256, "windows-1256"}, /* ANSI Arabic; Arabic (Windows) */ 448 CP_ALIAS(10081, "x-mac-turkish") /* Turkish (Mac) */ \
449 {1257, "windows-1257"}, /* ANSI Baltic; Baltic (Windows) */ 449 CP_ALIAS(10082, "x-mac-croatian") /* Croatian (Mac) */ \
450 {1258, "windows-1258"}, /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ 450 CP_ALIAS(20000, "x-Chinese_CNS") /* CNS Taiwan; Chinese Traditional (CNS) */ \
451 {1361, "Johab"}, /* Korean (Johab) */ 451 CP_ALIAS(20001, "x-cp20001") /* TCA Taiwan */ \
452 {10000, "macintosh"}, /* MAC Roman; Western European (Mac) */ 452 CP_ALIAS(20002, "x_Chinese-Eten") /* Eten Taiwan; Chinese Traditional (Eten) */ \
453 {10001, "x-mac-japanese"}, /* Japanese (Mac) */ 453 CP_ALIAS(20003, "x-cp20003") /* IBM5550 Taiwan */ \
454 {10002, "x-mac-chinesetrad"}, /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ 454 CP_ALIAS(20004, "x-cp20004") /* TeleText Taiwan */ \
455 {10003, "x-mac-korean"}, /* Korean (Mac) */ 455 CP_ALIAS(20005, "x-cp20005") /* Wang Taiwan */ \
456 {10004, "x-mac-arabic"}, /* Arabic (Mac) */ 456 CP_ALIAS(20105, "x-IA5") /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ \
457 {10005, "x-mac-hebrew"}, /* Hebrew (Mac) */ 457 CP_ALIAS(20106, "x-IA5-German") /* IA5 German (7-bit) */ \
458 {10006, "x-mac-greek"}, /* Greek (Mac) */ 458 CP_ALIAS(20107, "x-IA5-Swedish") /* IA5 Swedish (7-bit) */ \
459 {10007, "x-mac-cyrillic"}, /* Cyrillic (Mac) */ 459 CP_ALIAS(20108, "x-IA5-Norwegian") /* IA5 Norwegian (7-bit) */ \
460 {10008, "x-mac-chinesesimp"}, /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ 460 CP_ALIAS(20127, "us-ascii") /* US-ASCII (7-bit) */ \
461 {10010, "x-mac-romanian"}, /* Romanian (Mac) */ 461 CP_ALIAS(20261, "x-cp20261") /* T.61 */ \
462 {10017, "x-mac-ukrainian"}, /* Ukrainian (Mac) */ 462 CP_ALIAS(20269, "x-cp20269") /* ISO 6937 Non-Spacing Accent */ \
463 {10021, "x-mac-thai"}, /* Thai (Mac) */ 463 CP_ALIAS(20273, "IBM273") /* IBM EBCDIC Germany */ \
464 {10029, "x-mac-ce"}, /* MAC Latin 2; Central European (Mac) */ 464 CP_ALIAS(20277, "IBM277") /* IBM EBCDIC Denmark-Norway */ \
465 {10079, "x-mac-icelandic"}, /* Icelandic (Mac) */ 465 CP_ALIAS(20278, "IBM278") /* IBM EBCDIC Finland-Sweden */ \
466 {10081, "x-mac-turkish"}, /* Turkish (Mac) */ 466 CP_ALIAS(20280, "IBM280") /* IBM EBCDIC Italy */ \
467 {10082, "x-mac-croatian"}, /* Croatian (Mac) */ 467 CP_ALIAS(20284, "IBM284") /* IBM EBCDIC Latin America-Spain */ \
468 {20000, "x-Chinese_CNS"}, /* CNS Taiwan; Chinese Traditional (CNS) */ 468 CP_ALIAS(20285, "IBM285") /* IBM EBCDIC United Kingdom */ \
469 {20001, "x-cp20001"}, /* TCA Taiwan */ 469 CP_ALIAS(20290, "IBM290") /* IBM EBCDIC Japanese Katakana Extended */ \
470 {20002, "x_Chinese-Eten"}, /* Eten Taiwan; Chinese Traditional (Eten) */ 470 CP_ALIAS(20297, "IBM297") /* IBM EBCDIC France */ \
471 {20003, "x-cp20003"}, /* IBM5550 Taiwan */ 471 CP_ALIAS(20420, "IBM420") /* IBM EBCDIC Arabic */ \
472 {20004, "x-cp20004"}, /* TeleText Taiwan */ 472 CP_ALIAS(20423, "IBM423") /* IBM EBCDIC Greek */ \
473 {20005, "x-cp20005"}, /* Wang Taiwan */ 473 CP_ALIAS(20424, "IBM424") /* IBM EBCDIC Hebrew */ \
474 {20105, "x-IA5"}, /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ 474 CP_ALIAS(20833, "x-EBCDIC-KoreanExtended") /* IBM EBCDIC Korean Extended */ \
475 {20106, "x-IA5-German"}, /* IA5 German (7-bit) */ 475 CP_ALIAS(20838, "IBM-Thai") /* IBM EBCDIC Thai */ \
476 {20107, "x-IA5-Swedish"}, /* IA5 Swedish (7-bit) */ 476 CP_ALIAS(20866, "koi8-r") /* Russian (KOI8-R); Cyrillic (KOI8-R) */ \
477 {20108, "x-IA5-Norwegian"}, /* IA5 Norwegian (7-bit) */ 477 CP_ALIAS(20871, "IBM871") /* IBM EBCDIC Icelandic */ \
478 {20127, "us-ascii"}, /* US-ASCII (7-bit) */ 478 CP_ALIAS(20880, "IBM880") /* IBM EBCDIC Cyrillic Russian */ \
479 {20261, "x-cp20261"}, /* T.61 */ 479 CP_ALIAS(20905, "IBM905") /* IBM EBCDIC Turkish */ \
480 {20269, "x-cp20269"}, /* ISO 6937 Non-Spacing Accent */ 480 CP_ALIAS(20924, "IBM00924") /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ \
481 {20273, "IBM273"}, /* IBM EBCDIC Germany */ 481 CP_ALIAS(20932, "EUC-JP") /* Japanese (JIS 0208-1990 and 0121-1990) */ \
482 {20277, "IBM277"}, /* IBM EBCDIC Denmark-Norway */ 482 CP_ALIAS(20936, "x-cp20936") /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ \
483 {20278, "IBM278"}, /* IBM EBCDIC Finland-Sweden */ 483 CP_ALIAS(20949, "x-cp20949") /* Korean Wansung */ \
484 {20280, "IBM280"}, /* IBM EBCDIC Italy */ 484 CP_ALIAS(21025, "cp1025") /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ \
485 {20284, "IBM284"}, /* IBM EBCDIC Latin America-Spain */ 485 /* 21027 (deprecated) */ \
486 {20285, "IBM285"}, /* IBM EBCDIC United Kingdom */ 486 CP_ALIAS(21866, "koi8-u") /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ \
487 {20290, "IBM290"}, /* IBM EBCDIC Japanese Katakana Extended */ 487 CP_ALIAS(28591, "iso-8859-1") /* ISO 8859-1 Latin 1; Western European (ISO) */ \
488 {20297, "IBM297"}, /* IBM EBCDIC France */ 488 CP_ALIAS(28591, "iso8859-1") /* ISO 8859-1 Latin 1; Western European (ISO) */ \
489 {20420, "IBM420"}, /* IBM EBCDIC Arabic */ 489 CP_ALIAS(28591, "iso_8859-1") \
490 {20423, "IBM423"}, /* IBM EBCDIC Greek */ 490 CP_ALIAS(28591, "iso_8859_1") \
491 {20424, "IBM424"}, /* IBM EBCDIC Hebrew */ 491 CP_ALIAS(28592, "iso-8859-2") /* ISO 8859-2 Central European; Central European (ISO) */ \
492 {20833, "x-EBCDIC-KoreanExtended"}, /* IBM EBCDIC Korean Extended */ 492 CP_ALIAS(28592, "iso8859-2") /* ISO 8859-2 Central European; Central European (ISO) */ \
493 {20838, "IBM-Thai"}, /* IBM EBCDIC Thai */ 493 CP_ALIAS(28592, "iso_8859-2") \
494 {20866, "koi8-r"}, /* Russian (KOI8-R); Cyrillic (KOI8-R) */ 494 CP_ALIAS(28592, "iso_8859_2") \
495 {20871, "IBM871"}, /* IBM EBCDIC Icelandic */ 495 CP_ALIAS(28593, "iso-8859-3") /* ISO 8859-3 Latin 3 */ \
496 {20880, "IBM880"}, /* IBM EBCDIC Cyrillic Russian */ 496 CP_ALIAS(28593, "iso8859-3") /* ISO 8859-3 Latin 3 */ \
497 {20905, "IBM905"}, /* IBM EBCDIC Turkish */ 497 CP_ALIAS(28593, "iso_8859-3") \
498 {20924, "IBM00924"}, /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ 498 CP_ALIAS(28593, "iso_8859_3") \
499 {20932, "EUC-JP"}, /* Japanese (JIS 0208-1990 and 0121-1990) */ 499 CP_ALIAS(28594, "iso-8859-4") /* ISO 8859-4 Baltic */ \
500 {20936, "x-cp20936"}, /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ 500 CP_ALIAS(28594, "iso8859-4") /* ISO 8859-4 Baltic */ \
501 {20949, "x-cp20949"}, /* Korean Wansung */ 501 CP_ALIAS(28594, "iso_8859-4") \
502 {21025, "cp1025"}, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ 502 CP_ALIAS(28594, "iso_8859_4") \
503 /* 21027 (deprecated) */ 503 CP_ALIAS(28595, "iso-8859-5") /* ISO 8859-5 Cyrillic */ \
504 {21866, "koi8-u"}, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ 504 CP_ALIAS(28595, "iso8859-5") /* ISO 8859-5 Cyrillic */ \
505 {28591, "iso-8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ 505 CP_ALIAS(28595, "iso_8859-5") \
506 {28591, "iso8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ 506 CP_ALIAS(28595, "iso_8859_5") \
507 {28591, "iso_8859-1"}, 507 CP_ALIAS(28596, "iso-8859-6") /* ISO 8859-6 Arabic */ \
508 {28591, "iso_8859_1"}, 508 CP_ALIAS(28596, "iso8859-6") /* ISO 8859-6 Arabic */ \
509 {28592, "iso-8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ 509 CP_ALIAS(28596, "iso_8859-6") \
510 {28592, "iso8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ 510 CP_ALIAS(28596, "iso_8859_6") \
511 {28592, "iso_8859-2"}, 511 CP_ALIAS(28597, "iso-8859-7") /* ISO 8859-7 Greek */ \
512 {28592, "iso_8859_2"}, 512 CP_ALIAS(28597, "iso8859-7") /* ISO 8859-7 Greek */ \
513 {28593, "iso-8859-3"}, /* ISO 8859-3 Latin 3 */ 513 CP_ALIAS(28597, "iso_8859-7") \
514 {28593, "iso8859-3"}, /* ISO 8859-3 Latin 3 */ 514 CP_ALIAS(28597, "iso_8859_7") \
515 {28593, "iso_8859-3"}, 515 CP_ALIAS(28598, "iso-8859-8") /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ \
516 {28593, "iso_8859_3"}, 516 CP_ALIAS(28598, "iso8859-8") /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ \
517 {28594, "iso-8859-4"}, /* ISO 8859-4 Baltic */ 517 CP_ALIAS(28598, "iso_8859-8") \
518 {28594, "iso8859-4"}, /* ISO 8859-4 Baltic */ 518 CP_ALIAS(28598, "iso_8859_8") \
519 {28594, "iso_8859-4"}, 519 CP_ALIAS(28599, "iso-8859-9") /* ISO 8859-9 Turkish */ \
520 {28594, "iso_8859_4"}, 520 CP_ALIAS(28599, "iso8859-9") /* ISO 8859-9 Turkish */ \
521 {28595, "iso-8859-5"}, /* ISO 8859-5 Cyrillic */ 521 CP_ALIAS(28599, "iso_8859-9") \
522 {28595, "iso8859-5"}, /* ISO 8859-5 Cyrillic */ 522 CP_ALIAS(28599, "iso_8859_9") \
523 {28595, "iso_8859-5"}, 523 CP_ALIAS(28603, "iso-8859-13") /* ISO 8859-13 Estonian */ \
524 {28595, "iso_8859_5"}, 524 CP_ALIAS(28603, "iso8859-13") /* ISO 8859-13 Estonian */ \
525 {28596, "iso-8859-6"}, /* ISO 8859-6 Arabic */ 525 CP_ALIAS(28603, "iso_8859-13") \
526 {28596, "iso8859-6"}, /* ISO 8859-6 Arabic */ 526 CP_ALIAS(28603, "iso_8859_13") \
527 {28596, "iso_8859-6"}, 527 CP_ALIAS(28605, "iso-8859-15") /* ISO 8859-15 Latin 9 */ \
528 {28596, "iso_8859_6"}, 528 CP_ALIAS(28605, "iso8859-15") /* ISO 8859-15 Latin 9 */ \
529 {28597, "iso-8859-7"}, /* ISO 8859-7 Greek */ 529 CP_ALIAS(28605, "iso_8859-15") \
530 {28597, "iso8859-7"}, /* ISO 8859-7 Greek */ 530 CP_ALIAS(28605, "iso_8859_15") \
531 {28597, "iso_8859-7"}, 531 CP_ALIAS(29001, "x-Europa") /* Europa 3 */ \
532 {28597, "iso_8859_7"}, 532 CP_ALIAS(38598, "iso-8859-8-i") /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ \
533 {28598, "iso-8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ 533 CP_ALIAS(38598, "iso8859-8-i") /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ \
534 {28598, "iso8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ 534 CP_ALIAS(38598, "iso_8859-8-i") \
535 {28598, "iso_8859-8"}, 535 CP_ALIAS(38598, "iso_8859_8-i") \
536 {28598, "iso_8859_8"}, 536 CP_ALIAS(50220, "iso-2022-jp") /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ \
537 {28599, "iso-8859-9"}, /* ISO 8859-9 Turkish */ 537 CP_ALIAS(50221, "csISO2022JP") /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ \
538 {28599, "iso8859-9"}, /* ISO 8859-9 Turkish */ 538 CP_ALIAS(50222, "iso-2022-jp") /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ \
539 {28599, "iso_8859-9"}, 539 CP_ALIAS(50225, "iso-2022-kr") /* ISO 2022 Korean */ \
540 {28599, "iso_8859_9"}, 540 CP_ALIAS(50225, "iso2022-kr") /* ISO 2022 Korean */ \
541 {28603, "iso-8859-13"}, /* ISO 8859-13 Estonian */ 541 CP_ALIAS(50227, "x-cp50227") /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ \
542 {28603, "iso8859-13"}, /* ISO 8859-13 Estonian */ 542 /* 50229 ISO 2022 Traditional Chinese */ \
543 {28603, "iso_8859-13"}, 543 /* 50930 EBCDIC Japanese (Katakana) Extended */ \
544 {28603, "iso_8859_13"}, 544 /* 50931 EBCDIC US-Canada and Japanese */ \
545 {28605, "iso-8859-15"}, /* ISO 8859-15 Latin 9 */ 545 /* 50933 EBCDIC Korean Extended and Korean */ \
546 {28605, "iso8859-15"}, /* ISO 8859-15 Latin 9 */ 546 /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ \
547 {28605, "iso_8859-15"}, 547 /* 50936 EBCDIC Simplified Chinese */ \
548 {28605, "iso_8859_15"}, 548 /* 50937 EBCDIC US-Canada and Traditional Chinese */ \
549 {29001, "x-Europa"}, /* Europa 3 */ 549 /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ \
550 {38598, "iso-8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ 550 CP_ALIAS(51932, "euc-jp") /* EUC Japanese */ \
551 {38598, "iso8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ 551 CP_ALIAS(51936, "EUC-CN") /* EUC Simplified Chinese; Chinese Simplified (EUC) */ \
552 {38598, "iso_8859-8-i"}, 552 CP_ALIAS(51949, "euc-kr") /* EUC Korean */ \
553 {38598, "iso_8859_8-i"}, 553 /* 51950 EUC Traditional Chinese */ \
554 {50220, "iso-2022-jp"}, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ 554 CP_ALIAS(52936, "hz-gb-2312") /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */ \
555 {50221, "csISO2022JP"}, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ 555 CP_ALIAS(54936, "GB18030") /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */ \
556 {50222, "iso-2022-jp"}, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ 556 CP_ALIAS(57002, "x-iscii-de") /* ISCII Devanagari */ \
557 {50225, "iso-2022-kr"}, /* ISO 2022 Korean */ 557 CP_ALIAS(57003, "x-iscii-be") /* ISCII Bengali */ \
558 {50225, "iso2022-kr"}, /* ISO 2022 Korean */ 558 CP_ALIAS(57004, "x-iscii-ta") /* ISCII Tamil */ \
559 {50227, "x-cp50227"}, /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ 559 CP_ALIAS(57005, "x-iscii-te") /* ISCII Telugu */ \
560 /* 50229 ISO 2022 Traditional Chinese */ 560 CP_ALIAS(57006, "x-iscii-as") /* ISCII Assamese */ \
561 /* 50930 EBCDIC Japanese (Katakana) Extended */ 561 CP_ALIAS(57007, "x-iscii-or") /* ISCII Oriya */ \
562 /* 50931 EBCDIC US-Canada and Japanese */ 562 CP_ALIAS(57008, "x-iscii-ka") /* ISCII Kannada */ \
563 /* 50933 EBCDIC Korean Extended and Korean */ 563 CP_ALIAS(57009, "x-iscii-ma") /* ISCII Malayalam */ \
564 /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ 564 CP_ALIAS(57010, "x-iscii-gu") /* ISCII Gujarati */ \
565 /* 50936 EBCDIC Simplified Chinese */ 565 CP_ALIAS(57011, "x-iscii-pa") /* ISCII Punjabi */
566 /* 50937 EBCDIC US-Canada and Traditional Chinese */ 566
567 /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ 567#define CP_ALIAS(codepage, alias) codepage,
568 {51932, "euc-jp"}, /* EUC Japanese */ 568static const int cp_codepage[] = {
569 {51936, "EUC-CN"}, /* EUC Simplified Chinese; Chinese Simplified (EUC) */ 569 CP_ALIAS_LIST
570 {51949, "euc-kr"}, /* EUC Korean */
571 /* 51950 EUC Traditional Chinese */
572 {52936, "hz-gb-2312"}, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */
573 {54936, "GB18030"}, /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */
574 {57002, "x-iscii-de"}, /* ISCII Devanagari */
575 {57003, "x-iscii-be"}, /* ISCII Bengali */
576 {57004, "x-iscii-ta"}, /* ISCII Tamil */
577 {57005, "x-iscii-te"}, /* ISCII Telugu */
578 {57006, "x-iscii-as"}, /* ISCII Assamese */
579 {57007, "x-iscii-or"}, /* ISCII Oriya */
580 {57008, "x-iscii-ka"}, /* ISCII Kannada */
581 {57009, "x-iscii-ma"}, /* ISCII Malayalam */
582 {57010, "x-iscii-gu"}, /* ISCII Gujarati */
583 {57011, "x-iscii-pa"}, /* ISCII Punjabi */
584
585 {0, NULL}
586}; 570};
571#undef CP_ALIAS
572
573#define CP_ALIAS(codepage, alias) alias"\0"
574static const char cp_alias[] ALIGN1 =
575 CP_ALIAS_LIST;
576#undef CP_ALIAS
587 577
588/* 578/*
589 * SJIS SHIFTJIS table CP932 table 579 * SJIS SHIFTJIS table CP932 table
@@ -991,6 +981,7 @@ static int
991name_to_codepage(const char *name) 981name_to_codepage(const char *name)
992{ 982{
993 int i; 983 int i;
984 const char *alias;
994 985
995 if (*name == '\0' || 986 if (*name == '\0' ||
996 strcmp(name, "char") == 0) 987 strcmp(name, "char") == 0)
@@ -1004,9 +995,15 @@ name_to_codepage(const char *name)
1004 else if (_strnicmp(name, "xx", 2) == 0) 995 else if (_strnicmp(name, "xx", 2) == 0)
1005 return atoi(name + 2); /* XX123 for debug */ 996 return atoi(name + 2); /* XX123 for debug */
1006 997
1007 for (i = 0; codepage_alias[i].name != NULL; ++i) 998 i = 0;
1008 if (_stricmp(name, codepage_alias[i].name) == 0) 999 alias = cp_alias;
1009 return codepage_alias[i].codepage; 1000 while (*alias) {
1001 if (_stricmp(alias, name) == 0) {
1002 return cp_codepage[i];
1003 }
1004 alias += strlen(alias) + 1;
1005 ++i;
1006 }
1010 return -1; 1007 return -1;
1011} 1008}
1012 1009
@@ -1791,12 +1788,16 @@ int iconv_main(int argc, char **argv)
1791 FILE *in = stdin; 1788 FILE *in = stdin;
1792 FILE *out = stdout; 1789 FILE *out = stdout;
1793 int ignore = 0; 1790 int ignore = 0;
1791 const char *alias;
1794 1792
1795 while ((i = getopt(argc, argv, "f:t:lco:")) != -1) { 1793 while ((i = getopt(argc, argv, "f:t:lco:")) != -1) {
1796 switch (i) { 1794 switch (i) {
1797 case 'l': 1795 case 'l':
1798 for (i = 0; codepage_alias[i].name != NULL; ++i) 1796 alias = cp_alias;
1799 printf("%s\n", codepage_alias[i].name); 1797 while (*alias) {
1798 printf("%s\n", alias);
1799 alias += strlen(alias) + 1;
1800 }
1800 return 0; 1801 return 0;
1801 1802
1802 case 'f': 1803 case 'f':