Заметки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'); ?> |
||