Если Вы используете в своем приложении AJAX, то неизбежно возникнут проблемы с кодировкой при передаче в параметрах запроса русских букв независимо от метода (GET или POST).
Я предлагаю универсальное решение этой проблемы.
Для начала необходимо в JavaScript-e "преобразовать" Вашу переменную (пусть это будет var) функцией encodeURIComponent(), например encodeURIComponent(var).
Метод encodeURIComponentпреобразовывает все символы, кроме: символов латинского алфавита, десятичных цифр и
Далее в коде php осуществляем разбор значения принимаемой переменной. Далее ход действий зависит от кодировки Вашего сайта (в которой посетитель отправляет русские буквы). Если это UTF-8, то код будет выглядеть:
Код:
Если же это кодировка Windows, т.е. cp1251, то необходимо дополнительное преобразование из UTF-8 в cp1251:
Код:
Comments
encode(decodeURI(VAR_FROM_PHP))
где функция encode это:
function encode(sValue) {
var text = "", Ucode, ExitValue, s;
for (var i = 0; i < sValue.length; i++) {
s = sValue.charAt(i );
Ucode = s.charCodeAt(0) ;
var Acode = Ucode;
if (Ucode > 1039 && Ucode < 1104) {
Acode -= 848;
ExitValue = "%" + Acode.toString( 16);
}
else if (Ucode == 1025) {
Acode = 168;
ExitValue = "%" + Acode.toString( 16);
}
else if (Ucode == 1105) {
Acode = 184;
ExitValue = "%" + Acode.toString( 16);
}
else if (Ucode == 32) {
Acode = 32;
ExitValue = "%" + Acode.toString( 16);
}
else if (Ucode == 10){
Acode = 10;
ExitValue = "%0A";
}
else {
ExitValue = s;
}
text = text + ExitValue;
}
return text;
}
RSS feed for comments to this post