红包
◆ [2019-8-17 星期六 13:24] ◆ 您来自:18.207.134.207,欢迎您访问風雲工作室。 收藏本站 ◆ | ◆ 设为首页
"
联系站长(腾讯QQ)
5029111 [風雲]
站长当前离线
首  页 论坛交流 游戏频道 无忧脚本 网络硬盘 网店精选 聊 天 室 自助链接 来访记录 访客留言 搜索提供
位置:風雲工作室 - 论坛交流 - 技术专栏 - 脚本中心 - 另类解决Ajax中文乱码问题的方法 返回
主题:另类解决Ajax中文乱码问题的方法
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:272
发帖:304
登录:2019/8/14
注册:2006/6/28
(1楼)另类解决Ajax中文乱码问题的方法
首先说明,该方法是IE Only,比较适合WSH脚本、hta等小工具开发。
传统的方法是Adodb.Stream来指定字符编码的方式读出二进制文件,操作稍显复杂。用rs对象代码稍显简单,但仅适合系统当前编码(例如国内一般为gb2312)。
可以使用ActivX创建对象,ProgID是“Adodb.Recordset”或“Ador.Recordset”。当然,也可使用document直接创建,方法为:document.createElement("xml").recordset。代码如下:
var rs = document.createElement("xml").recorset;
rs.fields.append("data", 201, 0);
rs.open();
rs.addNew();
function bin2str(bin)
{
    rs(0).appendChunk(bin);
    rs(0).update();  // 此次使用update,下次再调用appendChunk就会变成数据覆盖模式
    return rs(0).value;
}
/* 此处省略掉相关Ajax代码 */
alert(bin2str(http.responseBody));


时间:2013年3月14日 3:40:57 IP:已记录 引用 回复
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:272
发帖:304
登录:2019/8/14
注册:2006/6/28
(2楼)
Microsoft就是强大,连xml对象还能对二进制数据进行Base64和Hex编码,将xml节点的dataType指定为bin.base64或bin.hex,然后将nodeTypedValue指定为二进制数据即可用xml节点的text属性查看编码后的内容,例如:
[您可以先修改代码再运行]
在js对二进制无能为力的情况下,微软提供的xml对象处理二进制数据真是一绝。

备注:文档模式不能高于IE 8才能使用该对象。


时间:2013年3月14日 4:04:01 IP:已记录 引用 回复

© Copyright 2006-2019,風雲工作室 All rights reserved.
湘ICP备05009306号QQ登录
操作 1 个库,连接 3 次,执行 8 次,耗时 110 毫秒。