1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#[allow(non_camel_case_types)]
#[derive(Debug, PartialEq)]
pub enum RecognizedEncoding {
    ASCII_8BIT,
    UTF_8,
    US_ASCII,
    UTF8_MAC,
    EUC_JP,
    Windows_31J,
    Big5,
    Big5_HKSCS,
    Big5_UAO,
    CESU_8,
    CP949,
    Emacs_Mule,
    EUC_KR,
    EUC_TW,
    GB18030,
    GBK,
    ISO_8859_1,
    ISO_8859_2,
    ISO_8859_3,
    ISO_8859_4,
    ISO_8859_5,
    ISO_8859_6,
    ISO_8859_7,
    ISO_8859_8,
    ISO_8859_9,
    ISO_8859_10,
    ISO_8859_11,
    ISO_8859_13,
    ISO_8859_14,
    ISO_8859_15,
    ISO_8859_16,
    KOI8_R,
    KOI8_U,
    Shift_JIS,
    Windows_1250,
    Windows_1251,
    Windows_1252,
    Windows_1253,
    Windows_1254,
    Windows_1257,
    IBM437,
    IBM737,
    IBM775,
    CP850,
    IBM852,
    CP852,
    IBM855,
    CP855,
    IBM857,
    IBM860,
    IBM861,
    IBM862,
    IBM863,
    IBM864,
    IBM865,
    IBM866,
    IBM869,
    Windows_1258,
    GB1988,
    MacCentEuro,
    MacCroatian,
    MacCyrillic,
    MacGreek,
    MacIceland,
    MacRoman,
    MacRomania,
    MacThai,
    MacTurkish,
    MacUkraine,
    CP950,
    CP951,
    Stateless_ISO_2022_JP,
    EucJP_ms,
    CP51932,
    EUC_JIS_2004,
    GB2312,
    GB12345,
    Windows_1256,
    Windows_1255,
    TIS_620,
    Windows_874,
    MacJapanese,
    UTF8_DoCoMo,
    SJIS_DoCoMo,
    UTF8_KDDI,
    SJIS_KDDI,
    Stateless_ISO_2022_JP_KDDI,
    UTF8_SoftBank,
    SJIS_SoftBank,
}

impl RecognizedEncoding {
    pub fn parse(s: &str) -> Option<Self> {
        match &s.to_uppercase()[..] {
            "ASCII-8BIT" => Some(Self::ASCII_8BIT),
            "UTF-8" => Some(Self::UTF_8),
            "US-ASCII" => Some(Self::US_ASCII),
            "UTF8-MAC" => Some(Self::UTF8_MAC),
            "EUC-JP" => Some(Self::EUC_JP),
            "WINDOWS-31J" => Some(Self::Windows_31J),
            "BIG5" => Some(Self::Big5),
            "BIG5-HKSCS" => Some(Self::Big5_HKSCS),
            "BIG5-UAO" => Some(Self::Big5_UAO),
            "CESU-8" => Some(Self::CESU_8),
            "CP949" => Some(Self::CP949),
            "EMACS-MULE" => Some(Self::Emacs_Mule),
            "EUC-KR" => Some(Self::EUC_KR),
            "EUC-TW" => Some(Self::EUC_TW),
            "GB18030" => Some(Self::GB18030),
            "GBK" => Some(Self::GBK),
            "ISO-8859-1" => Some(Self::ISO_8859_1),
            "ISO-8859-2" => Some(Self::ISO_8859_2),
            "ISO-8859-3" => Some(Self::ISO_8859_3),
            "ISO-8859-4" => Some(Self::ISO_8859_4),
            "ISO-8859-5" => Some(Self::ISO_8859_5),
            "ISO-8859-6" => Some(Self::ISO_8859_6),
            "ISO-8859-7" => Some(Self::ISO_8859_7),
            "ISO-8859-8" => Some(Self::ISO_8859_8),
            "ISO-8859-9" => Some(Self::ISO_8859_9),
            "ISO-8859-10" => Some(Self::ISO_8859_10),
            "ISO-8859-11" => Some(Self::ISO_8859_11),
            "ISO-8859-13" => Some(Self::ISO_8859_13),
            "ISO-8859-14" => Some(Self::ISO_8859_14),
            "ISO-8859-15" => Some(Self::ISO_8859_15),
            "ISO-8859-16" => Some(Self::ISO_8859_16),
            "KOI8-R" => Some(Self::KOI8_R),
            "KOI8-U" => Some(Self::KOI8_U),
            "SHIFT_JIS" => Some(Self::Shift_JIS),
            "WINDOWS-1250" => Some(Self::Windows_1250),
            "WINDOWS-1251" => Some(Self::Windows_1251),
            "WINDOWS-1252" => Some(Self::Windows_1252),
            "WINDOWS-1253" => Some(Self::Windows_1253),
            "WINDOWS-1254" => Some(Self::Windows_1254),
            "WINDOWS-1257" => Some(Self::Windows_1257),
            "IBM437" => Some(Self::IBM437),
            "IBM737" => Some(Self::IBM737),
            "IBM775" => Some(Self::IBM775),
            "CP850" => Some(Self::CP850),
            "IBM852" => Some(Self::IBM852),
            "CP852" => Some(Self::CP852),
            "IBM855" => Some(Self::IBM855),
            "CP855" => Some(Self::CP855),
            "IBM857" => Some(Self::IBM857),
            "IBM860" => Some(Self::IBM860),
            "IBM861" => Some(Self::IBM861),
            "IBM862" => Some(Self::IBM862),
            "IBM863" => Some(Self::IBM863),
            "IBM864" => Some(Self::IBM864),
            "IBM865" => Some(Self::IBM865),
            "IBM866" => Some(Self::IBM866),
            "IBM869" => Some(Self::IBM869),
            "WINDOWS-1258" => Some(Self::Windows_1258),
            "GB1988" => Some(Self::GB1988),
            "MACCENTEURO" => Some(Self::MacCentEuro),
            "MACCROATIAN" => Some(Self::MacCroatian),
            "MACCYRILLIC" => Some(Self::MacCyrillic),
            "MACGREEK" => Some(Self::MacGreek),
            "MACICELAND" => Some(Self::MacIceland),
            "MACROMAN" => Some(Self::MacRoman),
            "MACROMANIA" => Some(Self::MacRomania),
            "MACTHAI" => Some(Self::MacThai),
            "MACTURKISH" => Some(Self::MacTurkish),
            "MACUKRAINE" => Some(Self::MacUkraine),
            "CP950" => Some(Self::CP950),
            "CP951" => Some(Self::CP951),
            "STATELESS-ISO-2022-JP" => Some(Self::Stateless_ISO_2022_JP),
            "EUCJP-MS" => Some(Self::EucJP_ms),
            "CP51932" => Some(Self::CP51932),
            "EUC-JIS-2004" => Some(Self::EUC_JIS_2004),
            "GB2312" => Some(Self::GB2312),
            "GB12345" => Some(Self::GB12345),
            "WINDOWS-1256" => Some(Self::Windows_1256),
            "WINDOWS-1255" => Some(Self::Windows_1255),
            "TIS-620" => Some(Self::TIS_620),
            "WINDOWS-874" => Some(Self::Windows_874),
            "MACJAPANESE" => Some(Self::MacJapanese),
            "UTF8-DOCOMO" => Some(Self::UTF8_DoCoMo),
            "SJIS-DOCOMO" => Some(Self::SJIS_DoCoMo),
            "UTF8-KDDI" => Some(Self::UTF8_KDDI),
            "SJIS-KDDI" => Some(Self::SJIS_KDDI),
            "STATELESS-ISO-2022-JP-KDDI" => Some(Self::Stateless_ISO_2022_JP_KDDI),
            "UTF8-SOFTBANK" => Some(Self::UTF8_SoftBank),
            "SJIS-SOFTBAN" => Some(Self::SJIS_SoftBank),
            _ => None,
        }
    }
}