Skip to main content

charcode/
encodings.rs

1// @generated by tools/generate_tables.py from the WHATWG Encoding Standard indexes.
2// https://encoding.spec.whatwg.org/indexes.json
3// Do not edit by hand; re-run the generator instead.
4
5//! The [`Encoding`] instances for every encoding compiled in.
6//!
7//! Each exists once as a private `const`, so that it can be named in other
8//! constants such as the label table, and once as the `&'static` reference the
9//! API hands out.  Both are gated on the feature that carries the encoding's
10//! tables; see the crate documentation for what each feature covers.
11
12use crate::Encoding;
13#[cfg(feature = "single-byte")]
14use crate::tables::single_byte as sb;
15use crate::variant::VariantEncoding;
16
17// The Encoding
18
19pub(crate) const UTF_8_INIT: Encoding = Encoding::new("UTF-8", VariantEncoding::Utf8);
20/// UTF-8, the encoding every new format should use.
21pub static UTF_8: &Encoding = &UTF_8_INIT;
22
23// Legacy single-byte encodings
24
25#[cfg(feature = "single-byte")]
26pub(crate) const IBM866_INIT: Encoding = Encoding::new(
27    "IBM866",
28    VariantEncoding::SingleByte(
29        &sb::IBM866_DECODE,
30        &sb::IBM866_ENCODE_CODE_POINTS,
31        &sb::IBM866_ENCODE_BYTES,
32    ),
33);
34/// IBM866.
35#[cfg(feature = "single-byte")]
36pub static IBM866: &Encoding = &IBM866_INIT;
37
38#[cfg(feature = "single-byte")]
39pub(crate) const ISO_8859_2_INIT: Encoding = Encoding::new(
40    "ISO-8859-2",
41    VariantEncoding::SingleByte(
42        &sb::ISO_8859_2_DECODE,
43        &sb::ISO_8859_2_ENCODE_CODE_POINTS,
44        &sb::ISO_8859_2_ENCODE_BYTES,
45    ),
46);
47/// ISO-8859-2.
48#[cfg(feature = "single-byte")]
49pub static ISO_8859_2: &Encoding = &ISO_8859_2_INIT;
50
51#[cfg(feature = "single-byte")]
52pub(crate) const ISO_8859_3_INIT: Encoding = Encoding::new(
53    "ISO-8859-3",
54    VariantEncoding::SingleByte(
55        &sb::ISO_8859_3_DECODE,
56        &sb::ISO_8859_3_ENCODE_CODE_POINTS,
57        &sb::ISO_8859_3_ENCODE_BYTES,
58    ),
59);
60/// ISO-8859-3.
61#[cfg(feature = "single-byte")]
62pub static ISO_8859_3: &Encoding = &ISO_8859_3_INIT;
63
64#[cfg(feature = "single-byte")]
65pub(crate) const ISO_8859_4_INIT: Encoding = Encoding::new(
66    "ISO-8859-4",
67    VariantEncoding::SingleByte(
68        &sb::ISO_8859_4_DECODE,
69        &sb::ISO_8859_4_ENCODE_CODE_POINTS,
70        &sb::ISO_8859_4_ENCODE_BYTES,
71    ),
72);
73/// ISO-8859-4.
74#[cfg(feature = "single-byte")]
75pub static ISO_8859_4: &Encoding = &ISO_8859_4_INIT;
76
77#[cfg(feature = "single-byte")]
78pub(crate) const ISO_8859_5_INIT: Encoding = Encoding::new(
79    "ISO-8859-5",
80    VariantEncoding::SingleByte(
81        &sb::ISO_8859_5_DECODE,
82        &sb::ISO_8859_5_ENCODE_CODE_POINTS,
83        &sb::ISO_8859_5_ENCODE_BYTES,
84    ),
85);
86/// ISO-8859-5.
87#[cfg(feature = "single-byte")]
88pub static ISO_8859_5: &Encoding = &ISO_8859_5_INIT;
89
90#[cfg(feature = "single-byte")]
91pub(crate) const ISO_8859_6_INIT: Encoding = Encoding::new(
92    "ISO-8859-6",
93    VariantEncoding::SingleByte(
94        &sb::ISO_8859_6_DECODE,
95        &sb::ISO_8859_6_ENCODE_CODE_POINTS,
96        &sb::ISO_8859_6_ENCODE_BYTES,
97    ),
98);
99/// ISO-8859-6.
100#[cfg(feature = "single-byte")]
101pub static ISO_8859_6: &Encoding = &ISO_8859_6_INIT;
102
103#[cfg(feature = "single-byte")]
104pub(crate) const ISO_8859_7_INIT: Encoding = Encoding::new(
105    "ISO-8859-7",
106    VariantEncoding::SingleByte(
107        &sb::ISO_8859_7_DECODE,
108        &sb::ISO_8859_7_ENCODE_CODE_POINTS,
109        &sb::ISO_8859_7_ENCODE_BYTES,
110    ),
111);
112/// ISO-8859-7.
113#[cfg(feature = "single-byte")]
114pub static ISO_8859_7: &Encoding = &ISO_8859_7_INIT;
115
116#[cfg(feature = "single-byte")]
117pub(crate) const ISO_8859_8_INIT: Encoding = Encoding::new(
118    "ISO-8859-8",
119    VariantEncoding::SingleByte(
120        &sb::ISO_8859_8_DECODE,
121        &sb::ISO_8859_8_ENCODE_CODE_POINTS,
122        &sb::ISO_8859_8_ENCODE_BYTES,
123    ),
124);
125/// ISO-8859-8.
126#[cfg(feature = "single-byte")]
127pub static ISO_8859_8: &Encoding = &ISO_8859_8_INIT;
128
129#[cfg(feature = "single-byte")]
130pub(crate) const ISO_8859_8_I_INIT: Encoding = Encoding::new(
131    "ISO-8859-8-I",
132    VariantEncoding::SingleByte(
133        &sb::ISO_8859_8_DECODE,
134        &sb::ISO_8859_8_ENCODE_CODE_POINTS,
135        &sb::ISO_8859_8_ENCODE_BYTES,
136    ),
137);
138/// ISO-8859-8-I, identical to [`ISO_8859_8`] except in its name and implied text direction.
139#[cfg(feature = "single-byte")]
140pub static ISO_8859_8_I: &Encoding = &ISO_8859_8_I_INIT;
141
142#[cfg(feature = "single-byte")]
143pub(crate) const ISO_8859_10_INIT: Encoding = Encoding::new(
144    "ISO-8859-10",
145    VariantEncoding::SingleByte(
146        &sb::ISO_8859_10_DECODE,
147        &sb::ISO_8859_10_ENCODE_CODE_POINTS,
148        &sb::ISO_8859_10_ENCODE_BYTES,
149    ),
150);
151/// ISO-8859-10.
152#[cfg(feature = "single-byte")]
153pub static ISO_8859_10: &Encoding = &ISO_8859_10_INIT;
154
155#[cfg(feature = "single-byte")]
156pub(crate) const ISO_8859_13_INIT: Encoding = Encoding::new(
157    "ISO-8859-13",
158    VariantEncoding::SingleByte(
159        &sb::ISO_8859_13_DECODE,
160        &sb::ISO_8859_13_ENCODE_CODE_POINTS,
161        &sb::ISO_8859_13_ENCODE_BYTES,
162    ),
163);
164/// ISO-8859-13.
165#[cfg(feature = "single-byte")]
166pub static ISO_8859_13: &Encoding = &ISO_8859_13_INIT;
167
168#[cfg(feature = "single-byte")]
169pub(crate) const ISO_8859_14_INIT: Encoding = Encoding::new(
170    "ISO-8859-14",
171    VariantEncoding::SingleByte(
172        &sb::ISO_8859_14_DECODE,
173        &sb::ISO_8859_14_ENCODE_CODE_POINTS,
174        &sb::ISO_8859_14_ENCODE_BYTES,
175    ),
176);
177/// ISO-8859-14.
178#[cfg(feature = "single-byte")]
179pub static ISO_8859_14: &Encoding = &ISO_8859_14_INIT;
180
181#[cfg(feature = "single-byte")]
182pub(crate) const ISO_8859_15_INIT: Encoding = Encoding::new(
183    "ISO-8859-15",
184    VariantEncoding::SingleByte(
185        &sb::ISO_8859_15_DECODE,
186        &sb::ISO_8859_15_ENCODE_CODE_POINTS,
187        &sb::ISO_8859_15_ENCODE_BYTES,
188    ),
189);
190/// ISO-8859-15.
191#[cfg(feature = "single-byte")]
192pub static ISO_8859_15: &Encoding = &ISO_8859_15_INIT;
193
194#[cfg(feature = "single-byte")]
195pub(crate) const ISO_8859_16_INIT: Encoding = Encoding::new(
196    "ISO-8859-16",
197    VariantEncoding::SingleByte(
198        &sb::ISO_8859_16_DECODE,
199        &sb::ISO_8859_16_ENCODE_CODE_POINTS,
200        &sb::ISO_8859_16_ENCODE_BYTES,
201    ),
202);
203/// ISO-8859-16.
204#[cfg(feature = "single-byte")]
205pub static ISO_8859_16: &Encoding = &ISO_8859_16_INIT;
206
207#[cfg(feature = "single-byte")]
208pub(crate) const KOI8_R_INIT: Encoding = Encoding::new(
209    "KOI8-R",
210    VariantEncoding::SingleByte(
211        &sb::KOI8_R_DECODE,
212        &sb::KOI8_R_ENCODE_CODE_POINTS,
213        &sb::KOI8_R_ENCODE_BYTES,
214    ),
215);
216/// KOI8-R.
217#[cfg(feature = "single-byte")]
218pub static KOI8_R: &Encoding = &KOI8_R_INIT;
219
220#[cfg(feature = "single-byte")]
221pub(crate) const KOI8_U_INIT: Encoding = Encoding::new(
222    "KOI8-U",
223    VariantEncoding::SingleByte(
224        &sb::KOI8_U_DECODE,
225        &sb::KOI8_U_ENCODE_CODE_POINTS,
226        &sb::KOI8_U_ENCODE_BYTES,
227    ),
228);
229/// KOI8-U.
230#[cfg(feature = "single-byte")]
231pub static KOI8_U: &Encoding = &KOI8_U_INIT;
232
233#[cfg(feature = "single-byte")]
234pub(crate) const MACINTOSH_INIT: Encoding = Encoding::new(
235    "macintosh",
236    VariantEncoding::SingleByte(
237        &sb::MACINTOSH_DECODE,
238        &sb::MACINTOSH_ENCODE_CODE_POINTS,
239        &sb::MACINTOSH_ENCODE_BYTES,
240    ),
241);
242/// macintosh.
243#[cfg(feature = "single-byte")]
244pub static MACINTOSH: &Encoding = &MACINTOSH_INIT;
245
246#[cfg(feature = "single-byte")]
247pub(crate) const WINDOWS_874_INIT: Encoding = Encoding::new(
248    "windows-874",
249    VariantEncoding::SingleByte(
250        &sb::WINDOWS_874_DECODE,
251        &sb::WINDOWS_874_ENCODE_CODE_POINTS,
252        &sb::WINDOWS_874_ENCODE_BYTES,
253    ),
254);
255/// windows-874.
256#[cfg(feature = "single-byte")]
257pub static WINDOWS_874: &Encoding = &WINDOWS_874_INIT;
258
259#[cfg(feature = "single-byte")]
260pub(crate) const WINDOWS_1250_INIT: Encoding = Encoding::new(
261    "windows-1250",
262    VariantEncoding::SingleByte(
263        &sb::WINDOWS_1250_DECODE,
264        &sb::WINDOWS_1250_ENCODE_CODE_POINTS,
265        &sb::WINDOWS_1250_ENCODE_BYTES,
266    ),
267);
268/// windows-1250.
269#[cfg(feature = "single-byte")]
270pub static WINDOWS_1250: &Encoding = &WINDOWS_1250_INIT;
271
272#[cfg(feature = "single-byte")]
273pub(crate) const WINDOWS_1251_INIT: Encoding = Encoding::new(
274    "windows-1251",
275    VariantEncoding::SingleByte(
276        &sb::WINDOWS_1251_DECODE,
277        &sb::WINDOWS_1251_ENCODE_CODE_POINTS,
278        &sb::WINDOWS_1251_ENCODE_BYTES,
279    ),
280);
281/// windows-1251.
282#[cfg(feature = "single-byte")]
283pub static WINDOWS_1251: &Encoding = &WINDOWS_1251_INIT;
284
285#[cfg(feature = "single-byte")]
286pub(crate) const WINDOWS_1252_INIT: Encoding = Encoding::new(
287    "windows-1252",
288    VariantEncoding::SingleByte(
289        &sb::WINDOWS_1252_DECODE,
290        &sb::WINDOWS_1252_ENCODE_CODE_POINTS,
291        &sb::WINDOWS_1252_ENCODE_BYTES,
292    ),
293);
294/// windows-1252.
295#[cfg(feature = "single-byte")]
296pub static WINDOWS_1252: &Encoding = &WINDOWS_1252_INIT;
297
298#[cfg(feature = "single-byte")]
299pub(crate) const WINDOWS_1253_INIT: Encoding = Encoding::new(
300    "windows-1253",
301    VariantEncoding::SingleByte(
302        &sb::WINDOWS_1253_DECODE,
303        &sb::WINDOWS_1253_ENCODE_CODE_POINTS,
304        &sb::WINDOWS_1253_ENCODE_BYTES,
305    ),
306);
307/// windows-1253.
308#[cfg(feature = "single-byte")]
309pub static WINDOWS_1253: &Encoding = &WINDOWS_1253_INIT;
310
311#[cfg(feature = "single-byte")]
312pub(crate) const WINDOWS_1254_INIT: Encoding = Encoding::new(
313    "windows-1254",
314    VariantEncoding::SingleByte(
315        &sb::WINDOWS_1254_DECODE,
316        &sb::WINDOWS_1254_ENCODE_CODE_POINTS,
317        &sb::WINDOWS_1254_ENCODE_BYTES,
318    ),
319);
320/// windows-1254.
321#[cfg(feature = "single-byte")]
322pub static WINDOWS_1254: &Encoding = &WINDOWS_1254_INIT;
323
324#[cfg(feature = "single-byte")]
325pub(crate) const WINDOWS_1255_INIT: Encoding = Encoding::new(
326    "windows-1255",
327    VariantEncoding::SingleByte(
328        &sb::WINDOWS_1255_DECODE,
329        &sb::WINDOWS_1255_ENCODE_CODE_POINTS,
330        &sb::WINDOWS_1255_ENCODE_BYTES,
331    ),
332);
333/// windows-1255.
334#[cfg(feature = "single-byte")]
335pub static WINDOWS_1255: &Encoding = &WINDOWS_1255_INIT;
336
337#[cfg(feature = "single-byte")]
338pub(crate) const WINDOWS_1256_INIT: Encoding = Encoding::new(
339    "windows-1256",
340    VariantEncoding::SingleByte(
341        &sb::WINDOWS_1256_DECODE,
342        &sb::WINDOWS_1256_ENCODE_CODE_POINTS,
343        &sb::WINDOWS_1256_ENCODE_BYTES,
344    ),
345);
346/// windows-1256.
347#[cfg(feature = "single-byte")]
348pub static WINDOWS_1256: &Encoding = &WINDOWS_1256_INIT;
349
350#[cfg(feature = "single-byte")]
351pub(crate) const WINDOWS_1257_INIT: Encoding = Encoding::new(
352    "windows-1257",
353    VariantEncoding::SingleByte(
354        &sb::WINDOWS_1257_DECODE,
355        &sb::WINDOWS_1257_ENCODE_CODE_POINTS,
356        &sb::WINDOWS_1257_ENCODE_BYTES,
357    ),
358);
359/// windows-1257.
360#[cfg(feature = "single-byte")]
361pub static WINDOWS_1257: &Encoding = &WINDOWS_1257_INIT;
362
363#[cfg(feature = "single-byte")]
364pub(crate) const WINDOWS_1258_INIT: Encoding = Encoding::new(
365    "windows-1258",
366    VariantEncoding::SingleByte(
367        &sb::WINDOWS_1258_DECODE,
368        &sb::WINDOWS_1258_ENCODE_CODE_POINTS,
369        &sb::WINDOWS_1258_ENCODE_BYTES,
370    ),
371);
372/// windows-1258.
373#[cfg(feature = "single-byte")]
374pub static WINDOWS_1258: &Encoding = &WINDOWS_1258_INIT;
375
376#[cfg(feature = "single-byte")]
377pub(crate) const X_MAC_CYRILLIC_INIT: Encoding = Encoding::new(
378    "x-mac-cyrillic",
379    VariantEncoding::SingleByte(
380        &sb::X_MAC_CYRILLIC_DECODE,
381        &sb::X_MAC_CYRILLIC_ENCODE_CODE_POINTS,
382        &sb::X_MAC_CYRILLIC_ENCODE_BYTES,
383    ),
384);
385/// x-mac-cyrillic.
386#[cfg(feature = "single-byte")]
387pub static X_MAC_CYRILLIC: &Encoding = &X_MAC_CYRILLIC_INIT;
388
389// Legacy multi-byte Chinese (simplified) encodings
390
391#[cfg(feature = "gb18030")]
392pub(crate) const GBK_INIT: Encoding =
393    Encoding::new("GBK", VariantEncoding::Gb18030 { is_gbk: true });
394/// GBK, which decodes as [`GB18030`] but whose encoder emits only two-byte sequences.
395#[cfg(feature = "gb18030")]
396pub static GBK: &Encoding = &GBK_INIT;
397
398#[cfg(feature = "gb18030")]
399pub(crate) const GB18030_INIT: Encoding =
400    Encoding::new("gb18030", VariantEncoding::Gb18030 { is_gbk: false });
401/// gb18030, the Chinese national standard, which covers all of Unicode.
402#[cfg(feature = "gb18030")]
403pub static GB18030: &Encoding = &GB18030_INIT;
404
405// Legacy multi-byte Chinese (traditional) encodings
406
407#[cfg(feature = "big5")]
408pub(crate) const BIG5_HKSCS_INIT: Encoding = Encoding::new("Big5-HKSCS", VariantEncoding::Big5);
409/// The standard's Big5: Big5 plus the Hong Kong Supplementary Character Set and other common extensions.  For Big5 itself see [`BIG5`](crate::BIG5).
410#[cfg(feature = "big5")]
411pub static BIG5_HKSCS: &Encoding = &BIG5_HKSCS_INIT;
412
413// Legacy multi-byte Japanese encodings
414
415#[cfg(feature = "euc-jp")]
416pub(crate) const X_WHATWG_EUC_JP_INIT: Encoding =
417    Encoding::new("x-whatwg-euc-jp", VariantEncoding::EucJp);
418/// The standard's EUC-JP, which folds the NEC and IBM extension rows into the JIS X 0208 plane and remaps six of its pointers.  Its decoder accepts JIS X 0212 via the 0x8F prefix; its encoder never writes one.  For EUC-JP itself see [`EUC_JP`](crate::EUC_JP).
419#[cfg(feature = "euc-jp")]
420pub static X_WHATWG_EUC_JP: &Encoding = &X_WHATWG_EUC_JP_INIT;
421
422#[cfg(feature = "iso-2022-jp")]
423pub(crate) const X_WHATWG_ISO_2022_JP_INIT: Encoding =
424    Encoding::new("x-whatwg-iso-2022-jp", VariantEncoding::Iso2022Jp);
425/// The standard's ISO-2022-JP, which adds a half-width katakana mode behind `ESC ( I`, folds the NEC and IBM extension rows into the JIS X 0208 plane, and remaps six of its pointers.  For ISO-2022-JP itself see [`ISO_2022_JP`](crate::ISO_2022_JP).
426#[cfg(feature = "iso-2022-jp")]
427pub static X_WHATWG_ISO_2022_JP: &Encoding = &X_WHATWG_ISO_2022_JP_INIT;
428
429#[cfg(feature = "shift-jis")]
430pub(crate) const WINDOWS_31J_INIT: Encoding =
431    Encoding::new("windows-31j", VariantEncoding::ShiftJis);
432/// The standard's Shift_JIS, which is Windows codepage 932: the NEC and IBM extension rows, the end-user defined area, and seven of JIS X 0208's pointers remapped.  For Shift_JIS itself see [`SHIFT_JIS`](crate::SHIFT_JIS).
433#[cfg(feature = "shift-jis")]
434pub static WINDOWS_31J: &Encoding = &WINDOWS_31J_INIT;
435
436// Legacy multi-byte Korean encodings
437
438#[cfg(feature = "euc-kr")]
439pub(crate) const EUC_KR_INIT: Encoding = Encoding::new("EUC-KR", VariantEncoding::EucKr);
440/// EUC-KR, in practice the Unified Hangul Code (Windows codepage 949).
441#[cfg(feature = "euc-kr")]
442pub static EUC_KR: &Encoding = &EUC_KR_INIT;
443
444// Legacy miscellaneous encodings
445
446pub(crate) const REPLACEMENT_INIT: Encoding =
447    Encoding::new("replacement", VariantEncoding::Replacement);
448/// The `replacement` encoding, which decodes any non-empty input to a single U+FFFD.
449pub static REPLACEMENT: &Encoding = &REPLACEMENT_INIT;
450
451pub(crate) const UTF_16BE_INIT: Encoding = Encoding::new("UTF-16BE", VariantEncoding::Utf16Be);
452/// UTF-16BE.  Decode only; encoding to it yields UTF-8, per `get an output encoding`.
453pub static UTF_16BE: &Encoding = &UTF_16BE_INIT;
454
455pub(crate) const UTF_16LE_INIT: Encoding = Encoding::new("UTF-16LE", VariantEncoding::Utf16Le);
456/// UTF-16LE.  Decode only; encoding to it yields UTF-8, per `get an output encoding`.
457pub static UTF_16LE: &Encoding = &UTF_16LE_INIT;
458
459pub(crate) const X_USER_DEFINED_INIT: Encoding =
460    Encoding::new("x-user-defined", VariantEncoding::XUserDefined);
461/// x-user-defined, which maps bytes 0x80 to 0xFF into the private use area.
462pub static X_USER_DEFINED: &Encoding = &X_USER_DEFINED_INIT;