JSFiddle - React, Tailwind, and code Playground
JavaScript
const str = 'Détecté àlors ôùi';
const str2 = 'Détecté à lors ôù';
const charsets = [
'utf-8',
"ibm866",
"iso-8859-2",
"iso-8859-3",
"iso-8859-4",
"iso-8859-5",
"iso-8859-6",
"iso-8859-7",
"iso-8859-8",
"iso-8859-8-i",
"iso-8859-10",
"iso-8859-13",
"iso-8859-14",
"iso-8859-15",
"iso-8859-16",
"koi8-r",
"koi8-u",
"macintosh",
"windows-874",
"windows-1250",
"windows-1251",
"windows-1252",
"windows-1253",
"windows-1254",
"windows-1255",
"windows-1256",
"windows-1257",
"windows-1258",
"x-mac-cyrillic",
"gbk",
"gb18030",
"hz-gb-2312",
"big5",
"euc-jp",
"iso-2022-jp",
"shift-jis",
"euc-kr",
"iso-2022-kr",
"utf-16be",
"utf-16le",
"iso-2022-cn"
];
const encoder = new TextEncoder();
const view = encoder.encode(str2);
console.log('__________________')
charsets.forEach((charset) => {
try {
const decoder = new TextDecoder(charset);
const fixedStr = decoder.decode(view, {
fatal: false,
ignoreBOM: true,
});
console.log(charset, fixedStr);
} catch (e) {
console.log(charset, 'invalid');
}
})