Преобразовываю строку в жс с utf8 => windows-1251(ANSI, CP1251). Вроде все символы переводятся хорошо, кроме буквы
Ё
. Она превращается то в
E1
или в
@1
html
<a class="dwld-upd" tabindex="0">
<span class="txt">скачать</span>
</a>
JS
// Кодировщик 3
var encodeCP1251 = function (string) {
function encodeChar(c) {
var isKyr = function (str) {
return /[а-я]/i.test(str);
};
var cp1251 = `ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬*®Ї°±Ііґµ¶·\
ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя`;
var p = isKyr(c) ? cp1251.indexOf(c) + 128 : c.charCodeAt(0);
var h = p.toString(16);
if (h == "a") {
h = "0A";
}
return "%" + h;
}
var res = "";
for (var i = 0; i < string.length; i++) {
res += encodeChar(string.charAt(i)); //ну или string[i]
}
return res;
};
let perka = `<?xml version="1.0" encoding="windows-1251"?>
<Файл>
ЁЁЁ абвгд
</Файл>`
const link = document.querySelector(".dwld-upd");
link.setAttribute("href", "data:text/plain;charset=windows-1251," + JSON.parse( JSON.stringify(encodeCP1251(perka))));
link.setAttribute(
"download",
"file.xml"
);
link.classList.add("active");