`

关于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来获取数据流。但是经过不断的尝试,都不能用脚本创建这个对象。因为浏览器没有权限来创建这个对象。

 

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

 

 

分享到:
评论

相关推荐

    实现数据库二进制流转换成图片保存本地

    在IT领域,数据库中存储图片通常以二进制流(Binary Stream)的形式进行,这是因为二进制流可以高效地处理图像数据,同时节省存储空间。本文将深入探讨如何实现从数据库中的二进制流转换为图片,并将其保存到本地...

    C++十六进制转二进制

    本文将深入探讨如何在C++中进行十进制到十六进制以及十六进制到二进制的转换,这对于我们理解和处理计算机内部的数据表示至关重要。 首先,让我们从十进制转十六进制开始。在C++中,我们可以使用内置函数`std::hex`...

    C++ 二进制运算

    总之,二进制运算在C++编程中扮演着至关重要的角色,无论是数据结构的设计、算法的优化还是硬件层面的接口控制,都离不开对二进制运算的深刻理解和灵活运用。希望本文能为读者提供一个全面而深入的视角,激发大家...

    二进制十进制十六进制转换

    在计算机科学中,二进制、十进制和十六进制是三种常见的数值表示方式,它们在编程、网络通信和数据存储等领域起着至关重要的作用。理解这些数字系统的转换是IT基础知识的重要组成部分。 二进制(Binary)系统是基于...

    以二进制形式查看文件

    在计算机科学中,二进制形式查看文件是一个重要的操作,特别是在进行低级别数据处理、调试或分析时。这种查看方式允许我们看到文件的实际字节序列,而不仅仅是字符表示。二进制文件通常包含非文本数据,如图像、音频...

    进制转换工具(二进制、八进制、十进制、十六进制)

    进制转换是计算机科学中的基础概念,用于在不同的数值系统之间转换数字。...通过使用进制转换工具,我们可以更有效地处理和解析二进制、八进制、十进制和十六进制数据,从而更好地进行计算和沟通。

    通过查看二进制文件判断文件类型

    为了查看和解析二进制文件,我们可以使用各种工具,如`hexdump`(在Linux或MacOS中)、`xxd`(跨平台)或Windows的`Resource Hacker`。这些工具将二进制数据转换为十六进制表示,便于分析。例如,打开一个二进制文件...

    JS在IE和FF中的兼容性问题

    JavaScript(简称JS)是一种广泛应用于Web开发的脚本语言,它在不同的浏览器中可能存在兼容性问题,特别是Internet Explorer(IE)和Firefox(FF)之间。这两个浏览器对JS的实现方式有所不同,导致某些特性或功能在...

    二进制汉字互转程序

    在IT领域,二进制与汉字的转换是计算机科学中的基础操作,特别是在文本编码、数据存储和通信协议中。本文将深入探讨“二进制转汉字”和“汉字转二进制”的互转程序,以及如何使用C#编程语言实现这一功能。 首先,...

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...

    二进制css颜色代码和英语大全

    在这些格式中,二进制颜色代码是一种不太常见的表示方法,它使用0和1来表示颜色。二进制颜色代码通常需要转换为更常见的十六进制或RGB形式,以便在CSS中使用。例如,纯黑色的二进制代码为...

    (0-255)十进制-二进制-八进制-十六进制对照表

    在计算机科学和网络领域,数字通常以不同的进制表示,如十进制、二进制、八进制和十六进制。这些进制系统在处理数据、编程和网络通信时都发挥着重要作用。以下是关于这四种进制系统及其转换的知识点详解: 1. **十...

    十进制转化为二进制_八进制_十六进制代码 C#代码

    在编程领域,尤其是在C#语言中,数据的进制转换是一项基本操作,它涉及将数值从一种基数(如十进制)转换为另一种基数(如二进制、八进制或十六进制)。这里我们将详细探讨这个主题,并提供C#代码实现。 一、十进制...

    十六进制转换 十进制转换 二进制转换工具

    在计算机科学和信息技术领域,数字通常以不同的基数或进制表示,其中最常见的是二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制(Hexadecimal)。进制转换是理解和操作这些数字系统的基础,尤其在...

    C# 进制转换, 十,十六,二进制转换

    在C#中,我们可以轻松地实现不同进制之间的转换,包括十进制、十六进制和二进制。在Visual Studio 2008环境下,我们可以创建一个窗体应用程序来直观地进行这些转换。下面将详细介绍如何在C#中进行进制转换以及如何...

    判断文件是文本文件还是二进制文件

    在计算机领域,文件可以分为两种主要类型:文本文件和二进制文件。了解如何区分这两种文件类型对于数据处理和程序开发至关重要。文本文件通常由可读的字符组成,如ASCII编码,而二进制文件则包含机器可理解的原始位...

     二进制、八进制、十六进制

    在计算机科学中,二进制、八进制和十六进制是三种常见的数值表示系统,它们在编程和数据处理中扮演着重要角色。本文将深入探讨这些数字系统的基础概念、转换方法以及它们在IT领域的应用。 二进制(Binary)是计算机...

    二进制文件类型查看器

    二进制文件类型查看器是一种实用的软件工具,专门设计用于识别和查看各种二进制文件的类型。在计算机科学中,"二进制文件"指的是由机器代码组成,可以直接由计算机硬件执行的文件,与文本文件(由可读字符组成)形成...

    二进制 八进制 十进制 十六进制之间的进制转换.docx

    在计算机科学领域,不同的进制转换是至关重要的基础概念,特别是在数据存储、计算和编码方面。进制转换主要包括二进制、八进制、十进制和十六进制之间的互相转换。下面我们将详细讨论这些进制转换的方法。 1. 十...

    IE和FF的部分区别

    以下是关于IE和FF部分区别的详细分析: 1. **边界问题**: - 在CSS中,IE将边框宽度计算在元素的总宽度和高度之内,而Firefox则将边框外加到元素尺寸上。例如,一个设置为`width:100px;height:100px;border:1px ...

Global site tag (gtag.js) - Google Analytics