最佳答案
在我的 JavaScript 代码中,我需要以这种格式向服务器发送一条消息:
<size in bytes>CRLF
<data>CRLF
例如:
3
foo
数据可能包含 Unicode 字符。我需要将它们作为 UTF-8发送。
我正在寻找用 JavaScript 计算字符串长度(以字节为单位)的最跨浏览器的方法。
我尝试过这样组合我的有效载荷:
return unescape(encodeURIComponent(str)).length + "\n" + str + "\n"
但是它并没有为我提供更老的浏览器的精确结果(或者,也许是 UTF-16中那些浏览器中的字符串?).
有线索吗?
更新:
例如: 以字节为单位的字符串 ЭЭХ! Naïve?
在 UTF-8中是15个字节,但是一些浏览器报告的是23个字节。