ajaxSubmit вызывает некорректное декодирование символов
Рассмотрим следующую простую страницу Asp - форму с одним вводом текста и кнопкой отправки:
<%
response.write(Request.Form("test") & "<br/>")
%>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<form action="test.asp" method="post" id="form" name="form" accept-charset="ISO-8859-1">
<input type="text" name="test" />
<input type="submit" id="sub" />
</form>
<script type="text/javascript" />
$('#form').submit(function () {
$('#form').ajaxSubmit({
success : function(responseText){
},
error : function(){
}
});
return false;
});
</script>
Используя значение ®
:
Если я отправлю форму без ajax (не используя нижний блок скрипта), ответ будет ®
, Данные кодируются как test=%AE
,
Если я отправлю форму с ajax (используя нижний блок скрипта), ответ будет ®
, Данные кодируются как test=%C2%AE
,
поскольку %C2%AE
является действительной кодировкой для ®
это проблема VBScript?
1 ответ
Если я отправляю форму без ajax (не используя нижний блок скрипта), ответом будет ®. Данные кодируются как test=%AE.
Это из-за accept-charset="ISO-8859-1"
, ajaxSubmit
, с другой стороны, всегда использует UTF-8, игнорируя любые accept-charset
, (Вероятно, это связано с тем, что ограничения на AJAX означают, что любая другая кодировка будет нарушена в некоторых сценариях).
Я предлагаю удалить accept-charset
атрибут (который не работает так, как должно быть в IE в любом случае) и явно обслуживающий страницу как UTF-8. Это должно избавиться от ®
проблема.