首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串长度(以字节为单位),JavaScript

字符串长度(以字节为单位),JavaScript
EN

Stack Overflow用户
提问于 2011-04-01 23:59:37
回答 11查看 142.2K关注 0票数 144

在我的JavaScript代码中,我需要编写一条发送到服务器的消息,格式如下:

代码语言:javascript
运行
复制
<size in bytes>CRLF
<data>CRLF

示例:

代码语言:javascript
运行
复制
3
foo

数据可能包含unicode字符。我需要以UTF-8格式发送它们。

我正在寻找跨浏览器最多的方法来计算以字节为单位的JavaScript字符串的长度。

我尝试了这个来组成我的有效负载:

代码语言:javascript
运行
复制
return unescape(encodeURIComponent(str)).length + "\n" + str + "\n"

但是,对于较旧的浏览器(或者,这些浏览器中的字符串是否采用UTF-16?),它并不能给出准确的结果。

有什么线索吗?

更新:

示例: UTF-8中的字符串ЭЭХ! Naïve?的字节长度是15字节,但一些浏览器报告的是23字节。

EN

回答 11

Stack Overflow用户

发布于 2015-12-17 18:21:12

几年过去了,现在你可以原生地做了

代码语言:javascript
运行
复制
(new TextEncoder().encode('foo')).length

请注意,IE不支持它(您可以使用use a polyfill )。

MDN documentation

Standard specifications

票数 178
EN

Stack Overflow用户

发布于 2017-03-09 08:41:39

对于简单的UTF8编码,其兼容性比TextEncoder稍好,Blob可以做到这一点。不能在非常老的浏览器中工作。

代码语言:javascript
运行
复制
new Blob([""]).size; // -> 4  
票数 70
EN

Stack Overflow用户

发布于 2012-08-31 02:56:58

此函数将返回您传递给它的任何UTF-8字符串的字节大小。

代码语言:javascript
运行
复制
function byteCount(s) {
    return encodeURI(s).split(/%..|./).length - 1;
}

Source

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5515869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档