`

关于JS在IE和FF的二进制流解析问题

    博客分类:
  • JS
阅读更多

最近在做一个地图的数据流遇到了问题。就是对方要求采用二进制流的方式把数据发来给我解析。

目前JS中获取二进制的方式都是采用XMLHTTP 。

查到很多的网站已经明确了Ajax是不支持二进制的方式的。我在IE之中试图获取,但是只能获取几个字节就断了。原因是0x0000。二进制当中存在大量的这种数据。众所周知,0x00就是ASCII的结束标志。

 

在FF中,我们可以使用如下的代码来取得二进制数据流,不会断流:

  1. //fetches BINARY FILES synchronously using XMLHttpRequest
  2. load_url = function(url) { 
  3.   netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
  4.   var req = new XMLHttpRequest();
  5.   req.open('GET',url,false);
  6.   //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
  7.   req.overrideMimeType('text/plain; charset=x-user-defined');
  8.   req.send(null);
  9.   if (req.status != 200) return '';
  10.   return req.responseText;
  11. }
  12.  
  13. var filestream = load_url(url);
  14. var abyte = filestream.charCodeAt(x) & 0xff;

在FF中获取之后,发现数字和字母可以通过a= charCodeAt(i) 来得到Ascii码。然后如果是字母,通过string.fromcharcode(a) 来解析得到内容。

但是这种是Acsii编码方式,不支持中文等其他字符。所以遇到中文即变成乱码。

 

 

有人说在IE中通过adodb.stream来获取数据流。但是经过不断的尝试,都不能用脚本创建这个对象。因为浏览器没有权限来创建这个对象。

 

在此,希望有这方面经验的朋友能给与指点。 谢谢

 

 

分享到:
评论

相关推荐

    jquery获取颜色在ie和ff下的区别示例介绍

    例子中提到,使用$("#id").attr("color")在不同的浏览器(如FF即FireFox,Chrome,IE等)中获取到的颜色值可能存在差异。FireFox和Chrome中获取到的是颜色的名称"green",而IE中获取到的是颜色的十六进制值"#008000...

    js前端下载并编辑Excel样式

    在JavaScript(JS)前端开发中,处理Excel文件的下载和编辑是常见的需求,尤其是在需要用户交互和数据分析的应用中。本文将深入探讨如何使用JS在浏览器环境中实现Excel的下载和样式编辑,同时考虑到兼容IE8这一老旧...

    加密base64.docx

    通过对数据进行特定的转换和编码,可以确保数据能在各种不支持二进制数据的环境中安全传输。在现代浏览器中,通常可以通过内置的`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...

    北大青鸟初学HTML基础代码

    其中`color`属性用于指定文本颜色,颜色值通常采用16进制表示法,如`#ff0000`表示红色。 #### 十二、设置背景图片 - **语法**:`图片地址">` - **示例**:`<body background="background.jpg">` - **解析**:通过`...

    精易模块[源码] V5.15

    4、修正“IP_10进制转IP”与“IP_16进制转IP”命令反向的问题,感谢易友[@humanbean ]反馈。 5、改善“网页_访问”死循环代码,感谢易友[@67564226]反馈。 6、优化“文本_取随机数字”精简代码,提高执行效率,感谢...

    网管教程 从入门到精通软件篇.txt

    BIN:二进制文件 BINHex:苹果的一种编码格式 BMP:Windows或OS/2位图文件 BOOK:Adobe FrameMaker Book文件 BOX:Lotus Notes的邮箱文件 BPL:Borlard Delph 4打包库 BSP:Quake图形文件 BUN:CakeWalk 声音...

    web前端面试题3.doc

    - 插入元素:可以使用`arr.splice(index, 0, item)`在指定位置插入元素,这里是在第二个元素后插入3。 7. **数组排序**: - 根据`i`属性排序:使用`arr.sort(function(a, b){ return a.i - b.i; })`。 8. **字符...

    HTML特效代码大全(完整全收录)

    - **说明**: `#value` 可以为16进制颜色值,范围从 `#000000` (黑色) 到 `#FFFFFF` (白色)。 **12. 去除链接下划线** - **标签**: `目标地址" style="text-decoration:none">链接文本</a>` - **用途**: 移除链接...

Global site tag (gtag.js) - Google Analytics