在JavaScript跨浏览器中将字符串(UTF-8)编码为二进制数据

在JavaScript跨浏览器中将字符串(UTF-8)编码为二进制数据,javascript,encoding,utf-8,binary-data,Javascript,Encoding,Utf 8,Binary Data,我正在开发一个通过AJAX与服务器通信的网页。服务器需要特定格式的二进制数据。目前,我的JavaScript代码可以生成服务器所期望的全部数据,只有一部分数据由某个字符串参数的UTF-8表示组成 简而言之,我需要的是一个JavaScript函数,它获取字符串s,并将其UTF-8表示形式返回为Uint8Array 这在Firefox中非常容易,它有textcoder类: function utf8(s) { return new TextEncoder().encode(s); } 不幸的是

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

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

这在Firefox中非常容易,它有
textcoder
类:

function utf8(s) {
  return new TextEncoder().encode(s);
}
不幸的是,Firefox并不是唯一的浏览器;-)有人知道这种跨浏览器的方法吗

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

注意:我很乐意接受一个非跨浏览器的解决方案,只要它能在Google Chrome上运行。

API有一个标准,它是
textcoder
的一部分


textcoder
采用Chrome 38。请参阅Chromium Dashboard和Chromium Issue中的条目:文本编码API。

既然您知道问题的解决方案是UTF-8编码器,我将投票关闭它,因为它需要库推荐。谷歌可以在一秒钟内回答它。@Jon-我不是在找图书馆。另外,谷歌也没有回答我的问题(谷歌是我第一次、第二次……也是第十次尝试这么做)。那么,@Jon-你能给我指一个特定的链接吗?我检查了一些,但没有一个能提供我想要的。(注意,我希望UTF-8编码为二进制,即
Uint8Array
,而不是文本形式)是UTF-8编码器/解码器。如果您不希望结果出现在字符串中,而是希望出现在UINT8数组中,那么不要将编码结果放入带有
string.fromCharCode
的字符串中,而是直接将字符代码写入数组中。谢谢,@Kevin!对我来说不再那么重要了,但我希望将来有人会觉得它有用。