xmlhttp中文乱码之客户端解决方案

简介: xmlhttp中文乱码之客户端解决方案 2006-10-23 01:45 使用ajax的人,最头疼的莫过于处理返回的中文乱码问题。如果可以在服务器进行操作的话,这个问题并不复杂。问题是有时候我们没有在服务器端进行操作的权利。
xmlhttp中文乱码之客户端解决方案
2006-10-23 01:45

使用ajax的人,最头疼的莫过于处理返回的中文乱码问题。如果可以在服务器进行操作的话,这个问题并不复杂。问题是有时候我们没有在服务器端进行操作的权利。例如,你想获取的是新浪的首页。你唯一能做的就是在客户端进行处理。

xmlhttp返回的对象可以是:responseText,responseXML和responseBody。其中responseText和responseXML是按照UTF-8的编码方式去抓取目标页面。responseBody返回的是目标页面的二进制数据流。对于那些不是以UTF-8编码的目标页面,我们是无法通过使用responseText,responseXML这两种方式获取无乱码的中文页面的。这时我们可以通过responseBody方式返回目标页面的二进制数据流,然后对数据流进行客户端的转化就可以。下面是我在网上找到的分别用vbscript和javascript解决这个问题的方法。

<script language="VBScript">
function bin2str(bin)
dim tmp,ustr
tmp=""
for i=1 to LenB(bin)-1
ustr=AscB(MidB(bin,i,1))
if ustr>127 then
i=i+1
tmp=tmp&chr(ustr*256+AscB(MidB(bin,i,1)))
else
tmp=tmp&chr(ustr)
end if
next
bin2str=tmp
end function
</script>


<script language="javascript">
var adTypeBinary = 1
var adTypeText = 2
function bytes2bstr(vin){
var st = new ActiveXObject("adodb.stream")
with (st){
Type = adTypeText
Open()
WriteText(vin)
Position = 0
Charset = "GB2312"
Position = 2
return ReadText
}
}
</script>

下面是我成功解决该问题的完整文件

<html>
<head>
<title>ajax encoding</title>
<script language="javascript" type="text/javascript">

var xmlhttp;
function CreateXMLHttpRequest() {
xmlhttp=false;
if(window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject) {
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) { }
}
}
}

function load() {
CreateXMLHttpRequest();
if(!xmlhttp) {
document.getElementById("error").innerHTML="对不起,服务器有故障,不能传送数据!";
return false;
} else {
xmlhttp.onreadystatechange=process;
URL="http://www.sina.com.cn/";
xmlhttp.open('post',URL,false);
xmlhttp.send(null);
}
}

function process() {
if(xmlhttp.readyState==4) {
if(xmlhttp.status==200) {
var info = gb2utf8(xmlhttp.responseBody);
document.write(info);
} else {
alert(xmlhttp.status);
}
}
}

function gb2utf8(data){
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i<j) {
k=t[i].substring(0,4);
if(!glbEncode[k]) {
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}

</script>

</head>

<body onload="load()">
<div id="error"></div>
</body>

</html>

目录
相关文章
|
JavaScript 前端开发 开发者
【Web 前端】TypeScript 中的接口是什么?
【5月更文挑战第1天】【Web 前端】TypeScript 中的接口是什么?
|
Java C++ Android开发
Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using
using Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using 2015-06-29 浏览(108)   [摘要:1,MyEclipse快速键设置装备摆设方式 2,经常使用快速键 : (1),alt+/ //内容提醒, 近似于vs中的ctrl+j ,即单词提醒,输进单词的前几个字母,然后提醒大概的单词。
1333 0
|
27天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
35803 142
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
9天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
3938 30
|
22天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
7886 22
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
21天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
5362 12
|
5天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
852 21