+
+/* encodings */
+
+enum nkf_encodings {
+ ASCII,
+ JIS_X_0208,
+ JIS_X_0201,
+ ISO_8859_1,
+ ISO_2022_JP,
+ CP50220,
+ CP50221,
+ CP50222,
+ ISO_2022_JP_1,
+ ISO_2022_JP_3,
+ SHIFT_JIS,
+ WINDOWS_31J,
+ CP10001,
+ EUC_JP,
+ CP51932,
+ EUCJP_MS,
+ EUCJP_ASCII,
+ SHIFT_JISX0213,
+ SHIFT_JIS_2004,
+ EUC_JISX0213,
+ EUC_JIS_2004,
+ UTF_8,
+ UTF_8N,
+ UTF_8_BOM,
+ UTF8_MAC,
+ UTF_16,
+ UTF_16BE,
+ UTF_16BE_BOM,
+ UTF_16LE,
+ UTF_16LE_BOM,
+ UTF_32,
+ UTF_32BE,
+ UTF_32BE_BOM,
+ UTF_32LE,
+ UTF_32LE_BOM,
+ JIS_X_0212=0x2844,
+ JIS_X_0213_1=0x284F,
+ JIS_X_0213_2=0x2850,
+ BINARY
+};
+static const struct {
+ const int id;
+ const char *name;
+} encoding_id_to_name_table[] = {
+ {ASCII, "ASCII"},
+ {ISO_8859_1, "ISO-8859-1"},
+ {ISO_2022_JP, "ISO-2022-JP"},
+ {CP50220, "CP50220"},
+ {CP50221, "CP50221"},
+ {CP50222, "CP50222"},
+ {ISO_2022_JP_1, "ISO-2022-JP-1"},
+ {ISO_2022_JP_3, "ISO-2022-JP-3"},
+ {SHIFT_JIS, "Shift_JIS"},
+ {WINDOWS_31J, "WINDOWS-31J"},
+ {CP10001, "CP10001"},
+ {EUC_JP, "EUC-JP"},
+ {CP51932, "CP51932"},
+ {EUCJP_MS, "eucJP-MS"},
+ {EUCJP_ASCII, "eucJP-ASCII"},
+ {SHIFT_JISX0213, "Shift_JISX0213"},
+ {SHIFT_JIS_2004, "Shift_JIS-2004"},
+ {EUC_JISX0213, "EUC-JISX0213"},
+ {EUC_JIS_2004, "EUC-JIS-2004"},
+ {UTF_8, "UTF-8"},
+ {UTF_8N, "UTF-8N"},
+ {UTF_8_BOM, "UTF-8-BOM"},
+ {UTF8_MAC, "UTF8-MAC"},
+ {UTF_16, "UTF-16"},
+ {UTF_16BE, "UTF-16BE"},
+ {UTF_16BE_BOM, "UTF-16BE-BOM"},
+ {UTF_16LE, "UTF-16LE"},
+ {UTF_16LE_BOM, "UTF-16LE-BOM"},
+ {UTF_32, "UTF-32"},
+ {UTF_32BE, "UTF-32BE"},
+ {UTF_32BE_BOM, "UTF-32BE-BOM"},
+ {UTF_32LE, "UTF-32LE"},
+ {UTF_32LE_BOM, "UTF-32LE-BOM"},
+ {BINARY, "BINARY"},
+ {-1, ""}
+};
+static const struct {
+ const char *name;
+ const int id;
+} encoding_name_to_id_table[] = {
+ {"ASCII", ASCII},
+ {"ISO-2022-JP", ISO_2022_JP},
+ {"X-ISO2022JP-CP932", CP50220},
+ {"CP50220", CP50220},
+ {"CP50221", CP50221},
+ {"CP50222", CP50222},
+ {"ISO-2022-JP-1", ISO_2022_JP_1},
+ {"ISO-2022-JP-3", ISO_2022_JP_3},
+ {"SHIFT_JIS", SHIFT_JIS},
+ {"WINDOWS-31J", WINDOWS_31J},
+ {"CSWINDOWS31J", WINDOWS_31J},
+ {"CP932", WINDOWS_31J},
+ {"MS932", WINDOWS_31J},
+ {"CP10001", CP10001},
+ {"EUCJP", EUC_JP},
+ {"EUC-JP", EUC_JP},
+ {"CP51932", CP51932},
+ {"EUC-JP-MS", EUCJP_MS},
+ {"EUCJP-MS", EUCJP_MS},
+ {"EUCJPMS", EUCJP_MS},
+ {"EUC-JP-ASCII", EUCJP_ASCII},
+ {"EUCJP-ASCII", EUCJP_ASCII},
+ {"SHIFT_JISX0213", SHIFT_JISX0213},
+ {"SHIFT_JIS-2004", SHIFT_JIS_2004},
+ {"EUC-JISX0213", EUC_JISX0213},
+ {"EUC-JIS-2004", EUC_JIS_2004},
+ {"UTF-8", UTF_8},
+ {"UTF-8N", UTF_8N},
+ {"UTF-8-BOM", UTF_8_BOM},
+ {"UTF8-MAC", UTF8_MAC},
+ {"UTF-8-MAC", UTF8_MAC},
+ {"UTF-16", UTF_16},
+ {"UTF-16BE", UTF_16BE},
+ {"UTF-16BE-BOM", UTF_16BE_BOM},
+ {"UTF-16LE", UTF_16LE},
+ {"UTF-16LE-BOM", UTF_16LE_BOM},
+ {"UTF-32", UTF_32},
+ {"UTF-32BE", UTF_32BE},
+ {"UTF-32BE-BOM", UTF_32BE_BOM},
+ {"UTF-32LE", UTF_32LE},
+ {"UTF-32LE-BOM", UTF_32LE_BOM},
+ {"BINARY", BINARY},
+ {"", -1}
+};
+#if defined(DEFAULT_CODE_JIS)
+#define DEFAULT_ENCODING ISO_2022_JP
+#elif defined(DEFAULT_CODE_SJIS)
+#define DEFAULT_ENCODING SHIFT_JIS
+#elif defined(DEFAULT_CODE_EUC)
+#define DEFAULT_ENCODING EUC_JP
+#elif defined(DEFAULT_CODE_UTF8)
+#define DEFAULT_ENCODING UTF_8
+#endif
+
+