【问题标题】:ajaxSubmit causes incorrect character decodingajaxSubmit 导致不正确的字符解码
【发布时间】:2013-04-10 15:53:29
【问题描述】:

考虑以下简单的 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

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

由于%C2%AE® 的有效编码,这是vbscript 问题吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    我建议删除 accept-charset 属性(无论如何它在 IE 中都不能正常工作)并将页面 explicitly 提供为 UTF-8。这应该可以解决® 的问题。

    【讨论】:

    • 是的,在我发现 ajaxSubmit 将其编码为 UTF-8 之前,我开始写这个问题,在我这样做之后,并没有将问题改写为“为什么 ASP 解码 UTF-8作为 ACII 的字符串?”昨天,我一生无法将其解码为一个字符而不是两个字符(设置页面编码等)-今天早上,我一生都无法让它重现我的行为昨天看到 - 即使我将页面编码和接受字符集设置为 ISO-8859-1,它的解码也正确。在相关的说明中,我讨厌维护传统的经典 ASP 杂乱无章:P
    猜你喜欢
    • 2021-11-01
    • 2021-03-09
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2015-04-30
    相关资源
    最近更新 更多