ajaxSubmit导致错误的字符解码

时间:2013-04-17 18:38:44

标签: html unicode asp-classic character-encoding jquery-forms-plugin

考虑以下简单的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 个答案:

答案 0 :(得分:1)

  

如果我提交没有ajax的表单(不使用底部脚本块),则响应为®。数据编码为test =%AE。

这是因为accept-charset="ISO-8859-1"。另一方面,ajaxSubmit始终使用UTF-8,忽略任何accept-charset。 (这可能是因为对AJAX的限制意味着在某些情况下任何其他编码都会中断)。

我建议删除accept-charset属性(无论如何都不会像在IE中那样工作)并将页面explicitly作为UTF-8提供。这应该摆脱®问题。