【问题标题】:Encoding a string (in UTF-8) as binary data in JavaScript cross-browser在 JavaScript 跨浏览器中将字符串(UTF-8)编码为二进制数据
【发布时间】:2014-06-08 11:30:32
【问题描述】:

我正在开发一个通过 AJAX 与服务器通信的网页。服务器需要特定格式的二进制数据。目前,我的 JavaScript 代码可以生成服务器所期望的全部数据,除了一部分包含某个字符串参数的 UTF-8 表示。

简而言之,我需要一个 JavaScript 函数,它获取字符串 s 并将其 UTF-8 表示形式返回为 Uint8Array。

这在 Firefox 中非常简单,它有 TextEncoder 类:

function utf8(s) {
  return new TextEncoder().encode(s);
}

不幸的是,Firefox 并不是唯一的浏览器 ;-) 有谁知道这种跨浏览器的方法吗?

我可以编写自己的编码器,但如果可能的话,我宁愿使用原生的。

注意:我非常欢迎非跨浏览器解决方案,只要它适用于 Google Chrome。

【问题讨论】:

  • 既然您知道解决问题的方法是 UTF-8 编码器,我投票决定关闭它,因为它需要库推荐。谷歌可以在一秒钟内回答。
  • @Jon - 我不是在找图书馆。此外,谷歌没有回答我的问题(谷歌是我的第一次、第二次、……和第十次尝试)。
  • @Jon - 你能指点我一个特定的链接吗?我检查了一些,但没有一个提供我想要的。 (注意我想要 binary 中的 UTF-8 编码,即Uint8Array,而不是文本。)
  • This 是一个 UTF-8 编码器/解码器。如果您不希望结果在字符串中,而是在 Uint8Array 中,那么只需不要将编码结果放入带有String.fromCharCode 的字符串中,而是直接将字符代码写入数组中。

标签: javascript encoding utf-8 binary-data


【解决方案1】:

Encoding Living Standard API 有一个 polyfill,TextEncoder 是其中的一部分。

TextEncoder 在 Chrome 38 中发布。请参阅 Chromium Dashboard 中的 Encoding API 条目和 Chromium 问题 398149:文本编码 API。

【讨论】:

  • 谢谢@Kevin!对我来说不再那么重要了,但我希望将来有人会发现它有用。
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 2016-11-12
  • 2011-04-26
  • 2018-08-01
  • 2019-11-03
  • 2020-11-29
相关资源
最近更新 更多