js怎么计算一段文本的字节大小?

网上百度了下,大多就是英文字母占一个字节,汉字占几个字节,然后加在一起计算,但是如果是特殊符号占几个字节,标点符号占几个字节,或者是有什么其他方法。前端小白一枚,求教各位了

阅读 19.4k
5 个回答

用nodejs可以用Buffer

> var str1 = "测试adc96"
undefined
> str1
'测试adc96'
> new Buffer(str1)
<Buffer e6 b5 8b e8 af 95 61 64 63 39 36>
> var buf1 = new Buffer(str1)
undefined
> buf1.length
11
>

一个汉字三个字节目测UTF-8

浏览器:使用Blob


>var str1 = "测试adc96"
undefined
>var bl = new Blob([str1])
undefined
>bl.size
11

获得字符串的大小:

unescape(encodeURIComponent(str)).length / 1024

其实这个问题需要考虑你到底拿这个数据来干什么。
本来前端默认是不考虑字符串在计算机中具体存储模式的,因为没有意义(透明的)。
对于前端编程,需要考虑的是获取到的字符串如何进行拼接、截取等操作,而不是其中内部如何存储。
其实期望的是在计算字符串中字符数(这个才和拼接、截取有关)是不区分英文、中文之类的。
这样无论怎么样拼接、截取,都是整个字符的操作,而不会出现字符存储中间截断的问题。
当前一般是所有的浏览器实现(包括javascript运行引擎)在处理字符时都是用的Unicode 作为中间格式,它就没有这样的问题。
建议参考 http://baike.baidu.com/link?u...

对于前端来说 其实要区分 运行时存储态
一般运行时都是采用的Unicode
存储态则可能用不同的编码(一般在同一个文件中只采用一种编码),然后运行前读入内存时就已经转换成Unicode ,不过要保证转换的可靠,就需要专门的指明存储采用的编码,这也是如html文件中指定<meta charset="UTF-8">之类的意义所在。如果不指定,可能会出现读入遵照(预期)的编码不是文件实际的编码,造成读取错误(出现乱码)等。

我们在处理页面逻辑时是在运行时,保存的文件是存储态

其实更一般的说法就是,我们按常规理解进行编程(字符串中所有的字符都在计算字符时为1个字符,不区分是那种语言的文字),只需要保存时设置好能够正确展示的编码格式,同时在页面中按规范标识存储采用的编码。

这个跟计算机的数据结构,编码格式有关,一般说来,拿我们常用的来说,在gbk编码中,中文占2个字节,英文和数字占1个字节,你说的特殊字符,标点符号也是根据中英文区分的,也就是全角或者半角,在utf-8编码中,中文占3个字节,英文和数字还是1个字节.

"字符串".length 就是长度

如果你想判断中文英文,就判断ascii。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题