Кодирование UTF символов в JavaScript
Июнь 9, 2008
JavaScript хорош тем, что нормально работает с UTF, некоторые средства поддерживают юникод хуже. Эту функцию я написал чтобы работая с HTML кодировать потенциально проблемные символы (с кодом больше 127) в числовом формате вида: &#<десятичный код символа>;. (Для шестнадцатеричного представления: &#x<16-ричный код символа>;).
Функция для десятичного случая (аргумент — строка):
function encodeUtf(s) {
var buffer = [];
for(var i=0, l = s.length; i <= l-1; i++) {
var code = s.charCodeAt(i);
if(code > 127) {
buffer.push("&#" + code + ";");
}
else {
buffer.push(s[i]);
}
}
return buffer.join("");
}
Например, ‘ô’ закодируется как ô, а ‘R’ так и останется ‘R’.
Демо.