【问题标题】:Can JavaScript process binary data?JavaScript 可以处理二进制数据吗?
【发布时间】:2011-02-18 13:01:26
【问题描述】:

请允许我以面向情境的方式描述我的问题:

假设 Internet Explorer 仍然是主要的网络浏览器(Firefox 有用于二进制处理的文档):

Internet Explorer 中的 XMLHttpRequest.responseText 或 XMLHttpRequest.responseXML 需要 txt 或 xml/xhtml/html,但是服务器响应带有 MIME TYPE 应用程序/八位字节的 xmlHttprequest 呢?响应字符串中的字符是否都小于 256? (该字符串的每个字符

因为使用txt或者xml有字符集编码的问题,不知道怎么处理#[[[一个编码xml的CDDATA节点(例如:UTF-8、ASCII、GB18030)使用 JavaScript,当我 getNodeText 时,docObj 是返回字节还是解码的字符?如果是根据httpresponse中header指示的charSet解码的char,那就错了。

为避免与 charSet 混淆,我希望服务器响应八位字节数据并强制将字符串数据编码为 UTF-8,但另一个 charSet 为二进制格式。

如果响应是八进制,那么我猜浏览器不会尝试解码响应“txt”。

这很奇怪吗?还是错过了对基本事物的理解?

编辑:我相信问题是这样问的:JavaScript 可以安全地处理未以 Unicode 编码的字符串吗?尝试这样做有什么问题?

编辑:不不不,我的意思是如果 http-header: content-type 是“application/octet”,当我得到 XMLHttpRequestobj 时,Internet Explorer 是否会尝试将其解码为(16 位 Unicode 或 Internet Explorer 本地设置字符集)。 responseText 使用 JavaScript?或者它(Internet Explorer)只是将响应正文的每个字节包装为 JavaScript 字符串,然后该字符串中的每个字符都小于或等于 256(字符

我说的是火星语吗?可悲的是,如果我是火星人,我会毫无模糊问题地以游客的身份来。但是,我所在的国家/地区至少与 Mars 共享一处财产:RED。

【问题讨论】:

  • 请重新格式化。它是难以理解的。
  • 我想他想知道如何使用 AJAX 获取二进制数据。
  • 您可以在本地安装网络服务器,即在您自己的 Linux 工作站上(例如 UbuntuArch 等)、Mac OS XWindows

标签: javascript ajax xmlhttprequest content-type byte


【解决方案1】:

如果我正确理解您的问题,简短的回答是:是的,每个字节都将包含一个介于 0 和 255 之间的值(即无符号)。这就是字节的本质,由 8 位组成。

但是你为什么要这个?您想使用 JavaScript 处理哪些二进制数据?

仅供参考,请阅读Mastering Ajax, Part 3: Advanced requests and responses in Ajax

这使您可以确定 […] 如果 服务器将尝试返回二进制 数据而不是 HTML、文本或 XML (这三个都更容易 在 JavaScript 中处理比二进制 数据)。

(在Useful HEAD requests 下)。

如果你想知道,我发现这篇文章有一个简单的Google search

【讨论】:

  • 因为使用 txt 或 xml 存在字符集编码问题,我不知道如何处理 #[[[一个编码 xml 的 CDDATA 节点(例如:utf-8、ascii、gb18030 ) 使用 javascript,当我 getNodeText 时,docObj 是否返回我的字节或解码的字符?如果是根据httpresponse中的header指示的charSet解码的char,那就错了。
  • @Johnny:我想你的问题被否决了,因为它不清楚。我知道你的词汇量不太好,但我们真的必须考虑你想问什么。关于您的第二条评论:您应该使用此信息更新您的问题。如果您提供相关的源代码也会很有帮助。通常,HTTP 标头优先于文件内设置的编码。见w3.org/International/O-charsetw3.org/International/tutorials/tutorial-char-enc
  • 为避免与 charSet 混淆,我希望服务器响应 octect 数据并强制将字符串数据编码为 utf-8 但另一个 charSet。如果响应是八进制的,那么我猜浏览器不会尝试解码响应“txt”这很奇怪吗?还是错过了对基本事物的理解?
  • 感谢 Marcel Korpel,我确实有提炼文章问题的练习。我明天会做。
猜你喜欢
  • 2011-08-18
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 2011-08-16
  • 2011-06-24
相关资源
最近更新 更多