ЗаметкиJavaScript: escape(), совместимый с русскими буквами
К сожалению, стандартное поведение функции escape() при работе с русскими буквами не соответствует тому, что обычно требуется для веб-приложений. Вызов
// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8; // Ё
trans[0x451] = 0xB8; // ё
// Сохраняем стандартную функцию escape()
var escapeOrig = window.escape;
// Переопределяем функцию escape()
window.escape = function(str)
{
var ret = [];
// Составляем массив кодов символов, попутно переводим кириллицу
for (var i = 0; i < str.length; i++)
{
var n = str.charCodeAt(i);
if (typeof trans[n] != 'undefined')
n = trans[n];
if (n <= 0xFF)
ret.push(n);
}
return escapeOrig(String.fromCharCode.apply(null, ret));
}
Требуется IE 5.5+, поскольку более старые версии не поддерживают
Более корректно было бы кодировать данные в UTF-8 с помощью функции Пример декодирования строки
<?php
# Для Windows-1251:
echo preg_replace('#%u([0-9A-F]{4})#se',
'iconv("UTF-16BE","Windows-1251",pack("H4","$1"))',
'%u0442%u0435%u0441%u0442');
# Для UTF-8:
echo preg_replace('#%u([0-9A-F]{4})#se',
'iconv("UTF-16BE","UTF-8",pack("H4","$1"))',
'%u0442%u0435%u0441%u0442');
?>
|
||
