关于获取组件中返回的二进制数据(SAFEARRAY)的问题(一定给分!) JScript可以接受你的数据,类型为Unknown但这个数据,HTML表单好象不能放吧。但是如果你是要传到服务器,最好还是用VBS编码成16进制字符串了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 tryvar result= VoiceManager.GetParams().toArray();alert(result.length); 回复人: karma(无为) ( ) 信誉:100 错误:'VoiceManager.GetParams()' 为空或不是对象 回复人: lostinet(Lostinet) ( ) 信誉:100 JScript (param是RegForm表单的一个hidden元素):RegForm.param.value = VoiceManager.GetParams();alert(RegForm.param.value);是可以显示字符串内容的 会不会从二进制变为UNICODE字符串啊? what aboutvar result= (new VBArray(VoiceManager.GetParams())).toArray();alert(result.length); 回复人: Lostinet(Lostinet) ( ) 信誉:100 2002-4-2 17:57:36 得分:0 会不会从二进制变为UNICODE字符串啊?确实如此。如果我不传字符串而传二进制数据则会出问题。问题可能出在HIDDEN元素。如果用VBS编码,该怎么编?又该怎么传呢?谢谢! 你在组件中直接输出BSTR不好么??或者是这种:f3a83c......也好啊。送到服务器再进行还原。 回复人: lostinet(Lostinet) ( ) 信誉:100 2002-04-03 14:01:00 得分:0 没错是个好办法。我试过这个方法,但是我的数据编码被IE(?)修改了。我在component中是直接把二进制数据copy到双字节的BSTR中,然后送给JS,再由FORM交给Server,但是Server得到的东西面目全非。如果按BSTR来传的话,我需要知道怎样来还原我的原始数据。谢谢你的帮助。 这是不是涉及到UNICODE编码的东西?FORM的元素确实是用UNICODE传输的吗?看来我得查查资料才行,能给点提示吗? 不是COPY啊COPY当然会有问题。我的意思是,如果你的二进制本来就是字符串,那么就转换成UNICODE的BSTR如果是二进制的数据,那么就转为F386B9AA82这种BSTR。 lostinet(Lostinet) ( ) 信誉:100 是后者,二进制的数据。你说的第一种情况我明白了,用MultiByteToWideChar之类的函数对不对;但是第二种情况不太明白你的意思,我的就是这种情况,该怎么转换呢?难道是把二进制->字符串->Unicode?那样数据量会是原来的4倍。能不能再说详细一点?谢谢。刚才给分好像出了点错,待会儿再来。 是啊。。就是那样。不过不算4倍啦。表单发送的时候,又会变成UTF-8的编码的。所以传输过程,0-9A-F也是一个字母一个字节而已 ExtJs的下载功能 js "缺少对象" 急求解决办法 为什么外部调用js方法有时会报找不到错误? 求助!怎样把我的单文件上传代码,改成多文件上传代码? 密码框点击提示问题消失 图片热链接 提示信息 javascript中的数值比较问题 DOM下复制节点下所有内容的方法 html 菜鸟问题 一表单有一"Reset"按钮,当单击它时显示confirm对话框,点"确定",清除所填内容,单击"取消",不清除所填内容,该怎么做? 怎样在服务器端创建对象呀
alert(result.length);
alert(RegForm.param.value);是可以显示字符串内容的
alert(result.length);
会不会从二进制变为UNICODE字符串啊?确实如此。如果我不传字符串而传二进制数据则会出问题。问题可能出在HIDDEN元素。如果用VBS编码,该怎么编?又该怎么传呢?谢谢!
或者是这种:
f3a83c......也好啊。
送到服务器再进行还原。
我的意思是,如果你的二进制本来就是字符串,那么就转换成UNICODE的BSTR
如果是二进制的数据,那么就转为F386B9AA82这种BSTR。
不过不算4倍啦。
表单发送的时候,又会变成UTF-8的编码的。
所以传输过程,0-9A-F也是一个字母一个字节而已