在JavaScript跨浏览器中将字符串(UTF-8)编码为二进制数据
我正在开发一个通过AJAX与服务器通信的网页。服务器需要特定格式的二进制数据。目前,我的JavaScript代码可以生成服务器所期望的全部数据,只有一部分数据由某个字符串参数的UTF-8表示组成 简而言之,我需要的是一个JavaScript函数,它获取字符串在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); } 不幸的是
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!对我来说不再那么重要了,但我希望将来有人会觉得它有用。