CB's blog

Архив рубрики 'Без рубрики'

Кодирование UTF символов в JavaScript

Понедельник, Июнь 9th, 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("");
}

Например, ‘ô’ закодируется как &#244;, а ‘R’ так и останется ‘R’.

Демо.