最近在做一个地图的数据流遇到了问题。就是对方要求采用二进制流的方式把数据发来给我解析。
目前JS中获取二进制的方式都是采用XMLHTTP 。
查到很多的网站已经明确了Ajax是不支持二进制的方式的。我在IE之中试图获取,但是只能获取几个字节就断了。原因是0x0000。二进制当中存在大量的这种数据。众所周知,0x00就是ASCII的结束标志。
在FF中,我们可以使用如下的代码来取得二进制数据流,不会断流:
-
//fetches BINARY FILES synchronously using XMLHttpRequest
-
load_url = function(url) {
-
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
-
var req = new XMLHttpRequest();
-
req.open('GET',url,false);
-
//XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
-
req.overrideMimeType('text/plain; charset=x-user-defined');
-
req.send(null);
-
if (req.status != 200) return '';
-
return req.responseText;
-
}
-
-
var filestream = load_url(url);
-
var abyte = filestream.charCodeAt(x) & 0xff;
在FF中获取之后,发现数字和字母可以通过a= charCodeAt(i) 来得到Ascii码。然后如果是字母,通过string.fromcharcode(a) 来解析得到内容。
但是这种是Acsii编码方式,不支持中文等其他字符。所以遇到中文即变成乱码。
有人说在IE中通过adodb.stream来获取数据流。但是经过不断的尝试,都不能用脚本创建这个对象。因为浏览器没有权限来创建这个对象。
在此,希望有这方面经验的朋友能给与指点。 谢谢
分享到:
相关推荐
例子中提到,使用$("#id").attr("color")在不同的浏览器(如FF即FireFox,Chrome,IE等)中获取到的颜色值可能存在差异。FireFox和Chrome中获取到的是颜色的名称"green",而IE中获取到的是颜色的十六进制值"#008000...
在JavaScript(JS)前端开发中,处理Excel文件的下载和编辑是常见的需求,尤其是在需要用户交互和数据分析的应用中。本文将深入探讨如何使用JS在浏览器环境中实现Excel的下载和样式编辑,同时考虑到兼容IE8这一老旧...
通过对数据进行特定的转换和编码,可以确保数据能在各种不支持二进制数据的环境中安全传输。在现代浏览器中,通常可以通过内置的`btoa`和`atob`函数来轻松实现Base64编码和解码,但在不支持这些功能的老版本浏览器...
#### 二、核心代码解析 ##### 1. 初始化与配置 ```javascript if (document.all) { // To add more stars simply add more colours in below array!! colours = new Array('ff0000', '00ff00', '3366ff', 'ff00...
其中`color`属性用于指定文本颜色,颜色值通常采用16进制表示法,如`#ff0000`表示红色。 #### 十二、设置背景图片 - **语法**:`图片地址">` - **示例**:`<body background="background.jpg">` - **解析**:通过`...
4、修正“IP_10进制转IP”与“IP_16进制转IP”命令反向的问题,感谢易友[@humanbean ]反馈。 5、改善“网页_访问”死循环代码,感谢易友[@67564226]反馈。 6、优化“文本_取随机数字”精简代码,提高执行效率,感谢...
BIN:二进制文件 BINHex:苹果的一种编码格式 BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音...
- 插入元素:可以使用`arr.splice(index, 0, item)`在指定位置插入元素,这里是在第二个元素后插入3。 7. **数组排序**: - 根据`i`属性排序:使用`arr.sort(function(a, b){ return a.i - b.i; })`。 8. **字符...
- **说明**: `#value` 可以为16进制颜色值,范围从 `#000000` (黑色) 到 `#FFFFFF` (白色)。 **12. 去除链接下划线** - **标签**: `目标地址" style="text-decoration:none">链接文本</a>` - **用途**: 移除链接...