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