网上百度了下,大多就是英文字母占一个字节,汉字占几个字节,然后加在一起计算,但是如果是特殊符号占几个字节,标点符号占几个字节,或者是有什么其他方法。前端小白一枚,求教各位了
网上百度了下,大多就是英文字母占一个字节,汉字占几个字节,然后加在一起计算,但是如果是特殊符号占几个字节,标点符号占几个字节,或者是有什么其他方法。前端小白一枚,求教各位了
其实这个问题需要考虑你到底拿这个数据来干什么。
本来前端默认是不考虑字符串在计算机中具体存储模式的,因为没有意义(透明的)。
对于前端编程,需要考虑的是获取到的字符串如何进行拼接、截取等操作,而不是其中内部如何存储。
其实期望的是在计算字符串中字符数(这个才和拼接、截取有关)是不区分英文、中文之类的。
这样无论怎么样拼接、截取,都是整个字符的操作,而不会出现字符存储中间截断的问题。
当前一般是所有的浏览器实现(包括javascript运行引擎)在处理字符时都是用的Unicode 作为中间格式,它就没有这样的问题。
建议参考 http://baike.baidu.com/link?u...
对于前端来说 其实要区分 运行时 和 存储态
一般运行时都是采用的Unicode
存储态则可能用不同的编码(一般在同一个文件中只采用一种编码),然后运行前读入内存时就已经转换成Unicode ,不过要保证转换的可靠,就需要专门的指明存储采用的编码,这也是如html文件中指定<meta charset="UTF-8">
之类的意义所在。如果不指定,可能会出现读入遵照(预期)的编码不是文件实际的编码,造成读取错误(出现乱码)等。
我们在处理页面逻辑时是在运行时,保存的文件是存储态
其实更一般的说法就是,我们按常规理解进行编程(字符串中所有的字符都在计算字符时为1个字符,不区分是那种语言的文字),只需要保存时设置好能够正确展示的编码格式,同时在页面中按规范标识存储采用的编码。
这个跟计算机的数据结构,编码格式有关,一般说来,拿我们常用的来说,在gbk
编码中,中文占2个字节,英文和数字占1个字节,你说的特殊字符,标点符号也是根据中英文区分的,也就是全角或者半角,在utf-8
编码中,中文占3个字节,英文和数字还是1个字节.
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
用nodejs可以用Buffer
一个汉字三个字节目测UTF-8
浏览器:使用Blob