Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
通栏广告
Ajax 乱码详细

前面说了 Ajax 乱码的原因,以及解决乱码的示例,下面来个全面的分析。

  • XMLHTTP 返回的数据默认的字符编码是 UTF-8,如果前台页面是 GB2312 或者其它编码数据就会产生乱码。
  • POST 方法提交数据默认的字符编码是 UTF-8,如果后台是 GB2312 或其他编码数据就会产生乱码。

  • 后台解决办法:

    针对静态文件:

    HTM、XML 文件是静态的,所以只要保存时保存为 UTF-8 编码就可以了,以 XHTML 为例:
    <?xml version="1.0" encoding="gb2312"?>
    改为
    <?xml version="1.0" encoding="utf-8"?>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    改为
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    并保存,原理及常见问题请参见:Ajax 乱码

    针对动态文件:

    ASP 文件一般是动态的,通用的办法也是将该 ASP 文件保存为 UTF-8 编码。使用 response.charset = "utf-8" 仍会造成乱码。


    前台解决办法:

    针对 GET 数据:

    对字符串进行编码,比如将 request.asp?a=汉字 编码为:request.asp?a=%E6%B1%89%E5%AD%97,这就需要一个函数。在 ASP 中我们在《UTF-8 Unicode Ansi 汉字GB2321几种编码转换程序》一文中作过相关介绍,而在 JavaScript 中,幸运的是这个函数已经被集成,我们可以直接在 JavaScript 使用。我们建议使用 encodeURIComponent 对参数值进行编码,它可以编码所有的字符,而 encodeURI 不对“:”、“/”、“;”和“?”进行编码。对于参数值,显然应该是对所有字符进行编码。具体可见示例

    针对 POST 数据:

    增加一句:xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");具体可见示例

    文章评论
    标题:必填
    内容:
    文章信息