帮忙看看这个VBscript bytes2BSTR函数转换成javascript JS对于位操作这些很弱的....使用ADO.Stream对象来转换,我给你找找... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //VBScript版Function streamtochar(StrStream) set stream=CreateObject("ADODB.Stream") stream.type=1 stream.Mode=3 stream.Open stream.Write Strstream stream.Position= 0 stream.Type= 2 stream.Charset="GB2312" streamtochar= stream.ReadText stream.Close set stream=nothingEnd Function//JScript版function stream2Char(stream){ var str = ""; var Stream = new ActiveXObject("ADODB.Stream"); Stream.Type = 1; Stream.Mode = 3; Stream.Open(); Stream.Write(stream); Stream.Position = 0; Stream.Type = 2; Stream.Charset = "gb2312"; str = Stream.ReadText; //这里改成ReadText()好像也不成.. Stream.Close(); Stream = null; return str;}我就改成这样,你自己试试吧,我这边不能创建ADODB.Stream对象.靠.. ThisCharCode=vIn.charCodeAt(i);//此处错误改为:ThisCharCode=vIn(i)Microsoft(R) JScript(R)charCodeAt 方法 语言参考 版本 3 请参阅 应用于 --------------------------------------------------------------------------------描述返回指定字符的 Unicode 编码。 不行,JS里没有ASCB,MIDB对应的函数,所以只能VBS 支持调用我试过了,返回居然是空的 我去试matrixy的方法 不行,JS里没有ASCB,MIDB对应的函数,所以只能VBS--------------------------------------------------js是没有ascb和midb,但不代表js没有能力做这种事。绝对没有vbs能做而js不能做的事。我写一个midb示范一下哈<script language="JavaScript" type="text/JavaScript">function MidB(start,len){ var i,asc,pos=0,r_str="",end=len+start; for(i=0;i<this.length;i++) { asc=this.charCodeAt(i); if(asc<256) { pos++; if(pos>end) break; if(pos>=start) r_str+=String.fromCharCode(asc); } else { pos+=2; if(pos>end+1) break; else if(pos==end+1) { r_str+=String.fromCharCode((asc&0xff)); break; } if(pos>start+1) r_str+=String.fromCharCode(asc); else if(pos==start+1) r_str+=String.fromCharCode((asc>>8)&0xff); } } return r_str;}String.prototype.MidB=MidB;alert("中a文ae".MidB(0,4));</script> 靠,我上边回复怎么没人看?vbs里边midb只取一个bytejs里边的charcodeat区一个unicode,而unicode是两个byte所以取值就不对了!做出来当然乱码!vnt不是byte[]数组么?你直接vnt[i]取byte不就的了,何必如此麻烦! 楼上的别说粗口。你哪只眼睛看到楼主源码里有个叫vnt的数组了。 不是js不能写ASCB,MIDB函数而是js不能处理xmlHTTP.responseBody的数据(二进制)作为桌面应用可用ADODB.Stream控件,web应用就不可以了既然楼主是在做ajax应用,那就简单多了。(因为不跨域)你只需向ajax返回utf-8编码的内容就可以了如果你一定要返回非utf-8编码的内容,也只需先返回一个语言声明的头 返回的是用utf-8,用ASP输出。function stream2Char(stream){var str = "";var Stream = new ActiveXObject("ADODB.Stream");Stream.Type = 1;Stream.Mode = 3;Stream.Open();Stream.Write(stream);//type改成2这里用writeText倒是可以,Stream.Position = 0;Stream.Type = 2;Stream.Charset = "gb2312";str = Stream.ReadText(); //这里改成ReadText()好像也不成..Stream.Close();Stream = null;return str;} 但是type=1的时候用write怎么都不能写,说什么参数类型不正确或不在可以接受的范围内,或与其他参数冲突 ADO的设置参数问题好久不用这个了,我记得一个是控制只读的,一个是控制记录移动的,你找下吧 看了手册,说write()的参数是byte数组,type用1 你没有弄懂我的回复,当返回的是utf-8编码的内容或者虽不是utf-8编码但有相应的语言声明头时直接使用ajax.request的结果(内部应该是responseText方法)就可以了,不需要做任何转换 to xuzuning刚开始就是那样的,返回用的utf-8 直接使用结果就是乱码所以才想转换编码的嘛 请问js如何在一段文本中逐字换样式 JS的正则式是不是不支持中文啊 webqq 的效果怎么实现的? onkeypress与submit问题 请问scoutlin一个关于xsl和vml的问题,详细见内,别的高手也可以进来哦,谢谢 高分求教js问题 一个两天没有解决的问题,哪位大虾支招啊 请各位说说---如何在提交本页面表单时同时提交IFORM文件中的表单??? 能不能把子窗口的数据传回给父窗口?如果能应该怎么做? 能否用javascript 递归算法实现这个功能? 在线急等 如何 克隆table中选定行 一个比较难解决的问题
Function streamtochar(StrStream)
set stream=CreateObject("ADODB.Stream")
stream.type=1
stream.Mode=3
stream.Open
stream.Write Strstream
stream.Position= 0
stream.Type= 2
stream.Charset="GB2312"
streamtochar= stream.ReadText
stream.Close
set stream=nothing
End Function//JScript版
function stream2Char(stream){
var str = "";
var Stream = new ActiveXObject("ADODB.Stream");
Stream.Type = 1;
Stream.Mode = 3;
Stream.Open();
Stream.Write(stream);
Stream.Position = 0;
Stream.Type = 2;
Stream.Charset = "gb2312";
str = Stream.ReadText; //这里改成ReadText()好像也不成..
Stream.Close();
Stream = null;
return str;
}我就改成这样,你自己试试吧,我这边不能创建ADODB.Stream对象.靠..
charCodeAt 方法 语言参考
版本 3
请参阅 应用于
--------------------------------------------------------------------------------描述
返回指定字符的 Unicode 编码。
我去试matrixy的方法
--------------------------------------------------
js是没有ascb和midb,但不代表js没有能力做这种事。绝对没有vbs能做而js不能做的事。
我写一个midb示范一下哈<script language="JavaScript" type="text/JavaScript">
function MidB(start,len)
{
var i,asc,pos=0,r_str="",end=len+start;
for(i=0;i<this.length;i++)
{
asc=this.charCodeAt(i);
if(asc<256)
{
pos++;
if(pos>end) break;
if(pos>=start) r_str+=String.fromCharCode(asc);
}
else
{
pos+=2;
if(pos>end+1) break;
else if(pos==end+1)
{
r_str+=String.fromCharCode((asc&0xff));
break;
}
if(pos>start+1) r_str+=String.fromCharCode(asc);
else if(pos==start+1) r_str+=String.fromCharCode((asc>>8)&0xff);
}
}
return r_str;
}String.prototype.MidB=MidB;alert("中a文ae".MidB(0,4));
</script>
而是js不能处理xmlHTTP.responseBody的数据(二进制)作为桌面应用可用ADODB.Stream控件,web应用就不可以了既然楼主是在做ajax应用,那就简单多了。(因为不跨域)
你只需向ajax返回utf-8编码的内容就可以了
如果你一定要返回非utf-8编码的内容,也只需先返回一个语言声明的头
function stream2Char(stream){
var str = "";
var Stream = new ActiveXObject("ADODB.Stream");
Stream.Type = 1;
Stream.Mode = 3;
Stream.Open();
Stream.Write(stream);//type改成2这里用writeText倒是可以,
Stream.Position = 0;
Stream.Type = 2;
Stream.Charset = "gb2312";
str = Stream.ReadText(); //这里改成ReadText()好像也不成..
Stream.Close();
Stream = null;
return str;
}
好久不用这个了,我记得一个是控制只读的,一个是控制记录移动的,你找下吧
直接使用ajax.request的结果(内部应该是responseText方法)就可以了,不需要做任何转换
刚开始就是那样的,返回用的utf-8 直接使用结果就是乱码
所以才想转换编码的嘛