291 lines
6.5 KiB
JavaScript
291 lines
6.5 KiB
JavaScript
'use strict'
|
|
|
|
/**
|
|
* @see https://encoding.spec.whatwg.org/#concept-encoding-get
|
|
* @param {string|undefined} label
|
|
*/
|
|
function getEncoding (label) {
|
|
if (!label) {
|
|
return 'failure'
|
|
}
|
|
|
|
// 1. Remove any leading and trailing ASCII whitespace from label.
|
|
// 2. If label is an ASCII case-insensitive match for any of the
|
|
// labels listed in the table below, then return the
|
|
// corresponding encoding; otherwise return failure.
|
|
switch (label.trim().toLowerCase()) {
|
|
case 'unicode-1-1-utf-8':
|
|
case 'unicode11utf8':
|
|
case 'unicode20utf8':
|
|
case 'utf-8':
|
|
case 'utf8':
|
|
case 'x-unicode20utf8':
|
|
return 'UTF-8'
|
|
case '866':
|
|
case 'cp866':
|
|
case 'csibm866':
|
|
case 'ibm866':
|
|
return 'IBM866'
|
|
case 'csisolatin2':
|
|
case 'iso-8859-2':
|
|
case 'iso-ir-101':
|
|
case 'iso8859-2':
|
|
case 'iso88592':
|
|
case 'iso_8859-2':
|
|
case 'iso_8859-2:1987':
|
|
case 'l2':
|
|
case 'latin2':
|
|
return 'ISO-8859-2'
|
|
case 'csisolatin3':
|
|
case 'iso-8859-3':
|
|
case 'iso-ir-109':
|
|
case 'iso8859-3':
|
|
case 'iso88593':
|
|
case 'iso_8859-3':
|
|
case 'iso_8859-3:1988':
|
|
case 'l3':
|
|
case 'latin3':
|
|
return 'ISO-8859-3'
|
|
case 'csisolatin4':
|
|
case 'iso-8859-4':
|
|
case 'iso-ir-110':
|
|
case 'iso8859-4':
|
|
case 'iso88594':
|
|
case 'iso_8859-4':
|
|
case 'iso_8859-4:1988':
|
|
case 'l4':
|
|
case 'latin4':
|
|
return 'ISO-8859-4'
|
|
case 'csisolatincyrillic':
|
|
case 'cyrillic':
|
|
case 'iso-8859-5':
|
|
case 'iso-ir-144':
|
|
case 'iso8859-5':
|
|
case 'iso88595':
|
|
case 'iso_8859-5':
|
|
case 'iso_8859-5:1988':
|
|
return 'ISO-8859-5'
|
|
case 'arabic':
|
|
case 'asmo-708':
|
|
case 'csiso88596e':
|
|
case 'csiso88596i':
|
|
case 'csisolatinarabic':
|
|
case 'ecma-114':
|
|
case 'iso-8859-6':
|
|
case 'iso-8859-6-e':
|
|
case 'iso-8859-6-i':
|
|
case 'iso-ir-127':
|
|
case 'iso8859-6':
|
|
case 'iso88596':
|
|
case 'iso_8859-6':
|
|
case 'iso_8859-6:1987':
|
|
return 'ISO-8859-6'
|
|
case 'csisolatingreek':
|
|
case 'ecma-118':
|
|
case 'elot_928':
|
|
case 'greek':
|
|
case 'greek8':
|
|
case 'iso-8859-7':
|
|
case 'iso-ir-126':
|
|
case 'iso8859-7':
|
|
case 'iso88597':
|
|
case 'iso_8859-7':
|
|
case 'iso_8859-7:1987':
|
|
case 'sun_eu_greek':
|
|
return 'ISO-8859-7'
|
|
case 'csiso88598e':
|
|
case 'csisolatinhebrew':
|
|
case 'hebrew':
|
|
case 'iso-8859-8':
|
|
case 'iso-8859-8-e':
|
|
case 'iso-ir-138':
|
|
case 'iso8859-8':
|
|
case 'iso88598':
|
|
case 'iso_8859-8':
|
|
case 'iso_8859-8:1988':
|
|
case 'visual':
|
|
return 'ISO-8859-8'
|
|
case 'csiso88598i':
|
|
case 'iso-8859-8-i':
|
|
case 'logical':
|
|
return 'ISO-8859-8-I'
|
|
case 'csisolatin6':
|
|
case 'iso-8859-10':
|
|
case 'iso-ir-157':
|
|
case 'iso8859-10':
|
|
case 'iso885910':
|
|
case 'l6':
|
|
case 'latin6':
|
|
return 'ISO-8859-10'
|
|
case 'iso-8859-13':
|
|
case 'iso8859-13':
|
|
case 'iso885913':
|
|
return 'ISO-8859-13'
|
|
case 'iso-8859-14':
|
|
case 'iso8859-14':
|
|
case 'iso885914':
|
|
return 'ISO-8859-14'
|
|
case 'csisolatin9':
|
|
case 'iso-8859-15':
|
|
case 'iso8859-15':
|
|
case 'iso885915':
|
|
case 'iso_8859-15':
|
|
case 'l9':
|
|
return 'ISO-8859-15'
|
|
case 'iso-8859-16':
|
|
return 'ISO-8859-16'
|
|
case 'cskoi8r':
|
|
case 'koi':
|
|
case 'koi8':
|
|
case 'koi8-r':
|
|
case 'koi8_r':
|
|
return 'KOI8-R'
|
|
case 'koi8-ru':
|
|
case 'koi8-u':
|
|
return 'KOI8-U'
|
|
case 'csmacintosh':
|
|
case 'mac':
|
|
case 'macintosh':
|
|
case 'x-mac-roman':
|
|
return 'macintosh'
|
|
case 'iso-8859-11':
|
|
case 'iso8859-11':
|
|
case 'iso885911':
|
|
case 'tis-620':
|
|
case 'windows-874':
|
|
return 'windows-874'
|
|
case 'cp1250':
|
|
case 'windows-1250':
|
|
case 'x-cp1250':
|
|
return 'windows-1250'
|
|
case 'cp1251':
|
|
case 'windows-1251':
|
|
case 'x-cp1251':
|
|
return 'windows-1251'
|
|
case 'ansi_x3.4-1968':
|
|
case 'ascii':
|
|
case 'cp1252':
|
|
case 'cp819':
|
|
case 'csisolatin1':
|
|
case 'ibm819':
|
|
case 'iso-8859-1':
|
|
case 'iso-ir-100':
|
|
case 'iso8859-1':
|
|
case 'iso88591':
|
|
case 'iso_8859-1':
|
|
case 'iso_8859-1:1987':
|
|
case 'l1':
|
|
case 'latin1':
|
|
case 'us-ascii':
|
|
case 'windows-1252':
|
|
case 'x-cp1252':
|
|
return 'windows-1252'
|
|
case 'cp1253':
|
|
case 'windows-1253':
|
|
case 'x-cp1253':
|
|
return 'windows-1253'
|
|
case 'cp1254':
|
|
case 'csisolatin5':
|
|
case 'iso-8859-9':
|
|
case 'iso-ir-148':
|
|
case 'iso8859-9':
|
|
case 'iso88599':
|
|
case 'iso_8859-9':
|
|
case 'iso_8859-9:1989':
|
|
case 'l5':
|
|
case 'latin5':
|
|
case 'windows-1254':
|
|
case 'x-cp1254':
|
|
return 'windows-1254'
|
|
case 'cp1255':
|
|
case 'windows-1255':
|
|
case 'x-cp1255':
|
|
return 'windows-1255'
|
|
case 'cp1256':
|
|
case 'windows-1256':
|
|
case 'x-cp1256':
|
|
return 'windows-1256'
|
|
case 'cp1257':
|
|
case 'windows-1257':
|
|
case 'x-cp1257':
|
|
return 'windows-1257'
|
|
case 'cp1258':
|
|
case 'windows-1258':
|
|
case 'x-cp1258':
|
|
return 'windows-1258'
|
|
case 'x-mac-cyrillic':
|
|
case 'x-mac-ukrainian':
|
|
return 'x-mac-cyrillic'
|
|
case 'chinese':
|
|
case 'csgb2312':
|
|
case 'csiso58gb231280':
|
|
case 'gb2312':
|
|
case 'gb_2312':
|
|
case 'gb_2312-80':
|
|
case 'gbk':
|
|
case 'iso-ir-58':
|
|
case 'x-gbk':
|
|
return 'GBK'
|
|
case 'gb18030':
|
|
return 'gb18030'
|
|
case 'big5':
|
|
case 'big5-hkscs':
|
|
case 'cn-big5':
|
|
case 'csbig5':
|
|
case 'x-x-big5':
|
|
return 'Big5'
|
|
case 'cseucpkdfmtjapanese':
|
|
case 'euc-jp':
|
|
case 'x-euc-jp':
|
|
return 'EUC-JP'
|
|
case 'csiso2022jp':
|
|
case 'iso-2022-jp':
|
|
return 'ISO-2022-JP'
|
|
case 'csshiftjis':
|
|
case 'ms932':
|
|
case 'ms_kanji':
|
|
case 'shift-jis':
|
|
case 'shift_jis':
|
|
case 'sjis':
|
|
case 'windows-31j':
|
|
case 'x-sjis':
|
|
return 'Shift_JIS'
|
|
case 'cseuckr':
|
|
case 'csksc56011987':
|
|
case 'euc-kr':
|
|
case 'iso-ir-149':
|
|
case 'korean':
|
|
case 'ks_c_5601-1987':
|
|
case 'ks_c_5601-1989':
|
|
case 'ksc5601':
|
|
case 'ksc_5601':
|
|
case 'windows-949':
|
|
return 'EUC-KR'
|
|
case 'csiso2022kr':
|
|
case 'hz-gb-2312':
|
|
case 'iso-2022-cn':
|
|
case 'iso-2022-cn-ext':
|
|
case 'iso-2022-kr':
|
|
case 'replacement':
|
|
return 'replacement'
|
|
case 'unicodefffe':
|
|
case 'utf-16be':
|
|
return 'UTF-16BE'
|
|
case 'csunicode':
|
|
case 'iso-10646-ucs-2':
|
|
case 'ucs-2':
|
|
case 'unicode':
|
|
case 'unicodefeff':
|
|
case 'utf-16':
|
|
case 'utf-16le':
|
|
return 'UTF-16LE'
|
|
case 'x-user-defined':
|
|
return 'x-user-defined'
|
|
default: return 'failure'
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
getEncoding
|
|
}
|