在我的JavaScript代码中,我需要编写一条发送到服务器的消息,格式如下:
<size in bytes>CRLF
<data>CRLF示例:
3
foo数据可能包含unicode字符。我需要以UTF-8格式发送它们。
我正在寻找跨浏览器最多的方法来计算以字节为单位的JavaScript字符串的长度。
我尝试了这个来组成我的有效负载:
return unescape(encodeURIComponent(str)).length + "\n" + str + "\n"但是,对于较旧的浏览器(或者,这些浏览器中的字符串是否采用UTF-16?),它并不能给出准确的结果。
有什么线索吗?
更新:
示例: UTF-8中的字符串ЭЭХ! Naïve?的字节长度是15字节,但一些浏览器报告的是23字节。
发布于 2017-03-09 08:41:39
对于简单的UTF8编码,其兼容性比TextEncoder稍好,Blob可以做到这一点。不能在非常老的浏览器中工作。
new Blob([""]).size; // -> 4 https://stackoverflow.com/questions/5515869
复制相似问题