Хабр
β
Открыть список
Как стать автором
Моя лента
Все потоки
Разработка
Администрирование
Дизайн
Менеджмент
Маркетинг
Научпоп
Поиск
Написать публикацию
Настройки
Войти
Обновить
0
0
RaSta
@RaSta
Пользователь
Подписаться
Отправить сообщение
Профиль
Публикации
1
Комментарии
81
Закладки
110
Ещё
Открыть список
Подписчики
2
Подписки
2
Скопировать ссылку на RSS
Разберемся раз и навсегда: AJAX, «кириллические символы», кодировки, prototype.js, jQuery, JsHttpRequest
RaSta
19 дек 2007 в 20:52
если нужно юзать cp1251 использую такой вариант:
JavaScript-аналог функций PHP urlencode и urldecode для cp1251
var trans=[];
var snart=[];
for(var i=0x410;i<=0x44F;i++)
{
trans[i]=i-0x350;
snart[i-0x350] = i;
}
trans[0x401]= 0xA8;
trans[0x451]= 0xB8;
snart[0xA8] = 0x401;
snart[0xB8] = 0x451;
window.urlencode = 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 window.escape(String.fromCharCode.apply(null,ret));
}
window.urldecode = function(str)
{
var ret=[];
str = unescape(str);
for(var i=0;i<str.length;i++)
{
var n=str.charCodeAt(i);
if(typeof snart[n]!='undefined')
n = snart[n];
ret.push(n);
}
return String.fromCharCode.apply(null,ret);
}
</code>
таким образом у клиента
str = window.urlencode("строка в cp1251")
а на сервере
$str = urldecode($_REQUEST['str']);
спасибо <a href='http://forum.vingrad.ru/act-ST/f-176/t-154562.html' >Aco</a>
Назад
Сюда
1
2
3
4
5
Туда
Назад
Информация
В рейтинге
Не участвует
Дата рождения
9 марта 1983
Зарегистрирован
13 декабря 2007
Активность
9 февраля 2016 в 19:00
JavaScript-аналог функций PHP urlencode и urldecode для cp1251
var trans=[];
var snart=[];
for(var i=0x410;i<=0x44F;i++)
{
trans[i]=i-0x350;
snart[i-0x350] = i;
}
trans[0x401]= 0xA8;
trans[0x451]= 0xB8;
snart[0xA8] = 0x401;
snart[0xB8] = 0x451;
window.urlencode = 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 window.escape(String.fromCharCode.apply(null,ret));
}
window.urldecode = function(str)
{
var ret=[];
str = unescape(str);
for(var i=0;i<str.length;i++)
{
var n=str.charCodeAt(i);
if(typeof snart[n]!='undefined')
n = snart[n];
ret.push(n);
}
return String.fromCharCode.apply(null,ret);
}
</code>
таким образом у клиента
str = window.urlencode("строка в cp1251")
а на сервере
$str = urldecode($_REQUEST['str']);
спасибо <a href='http://forum.vingrad.ru/act-ST/f-176/t-154562.html' >Aco</a>