Если у вас уже есть правильная строка, вы можете сделать это следующим образом:
ECMAScript ≥ 6, с поддержкой Emoji
(см .: https://medium.com/@giltayar/iterating-over-emoji-characters-the-es6-way-f06e4589516)
function decimalEscape(s) {
let buffer = [];
for(let ch of s) {
if(ch.codePointAt(0) <= 127) {
buffer.push(ch);
} else {
buffer.push('&#' + ch.codePointAt(0) + ';');
}
}
return buffer.join('');
}
ECMAScript ≤ 5, без поддержки Emoji:
function decimalEscape(s) {
var buffer = [];
for(var i = 0, f = s.length; i < f; ++i) {
if(s.charCodeAt(i) <= 127) {
buffer.push(s.charAt(i));
} else {
buffer.push('&#' + s.charCodeAt(i) + ';');
}
}
return buffer.join('');
}
Использование:
decimalEscape("Olá"); // -> returns "Olá"
Если у вас нет нужногоПока нет строки JavaScript (просто набор байтов в каком-то буфере или если у вас есть строка, которая уже находится в неправильной кодировке), вам, конечно, придется сначала исправить строку.