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. Это должно избавиться от ® проблема.

Другие вопросы по тегам