http://www.alloyteam.com/2013/12/js-calculate-the-number-of-bytes-occupied-by-a-string/
/**
* 计算字符串所占的内存字节数,默认使用UTF-8的编码方式计算,也可制定为UTF-16
* UTF-8 是一种可变长度的 Unicode 编码格式,使用一至四个字节为每个字符编码
*
* 000000 - 00007F(128个代码) 0zzzzzzz(00-7F) 一个字节
* 000080 - 0007FF(1920个代码) 110yyyyy(C0-DF) 10zzzzzz(80-BF) 两个字节
* 000800 - 00D7FF
00E000 - 00FFFF(61440个代码) 1110xxxx(E0-EF) 10yyyyyy 10zzzzzz 三个字节
* 010000 - 10FFFF(1048576个代码) 11110www(F0-F7) 10xxxxxx 10yyyyyy 10zzzzzz 四个字节
*
* 注: Unicode在范围 D800-DFFF 中不存在任何字符
* {@link <a onclick="javascript:pageTracker._trackPageview('/outgoing/zh.wikipedia.org/wiki/UTF-8');" href="http://zh.wikipedia.org/wiki/UTF-8">http://zh.wikipedia.org/wiki/UTF-8</a>}
*
* UTF-16 大部分使用两个字节编码,编码超出 65535 的使用四个字节
* 000000 - 00FFFF 两个字节
* 010000 - 10FFFF 四个字节
*
* {@link <a onclick="javascript:pageTracker._trackPageview('/outgoing/zh.wikipedia.org/wiki/UTF-16');" href="http://zh.wikipedia.org/wiki/UTF-16">http://zh.wikipedia.org/wiki/UTF-16</a>}
* @param {String} str
* @param {String} charset utf-8, utf-16
* @return {Number}
*/
var sizeof = function(str, charset){
var total = 0,
charCode,
i,
len;
charset = charset ? charset.toLowerCase() : '';
if(charset === 'utf-16' || charset === 'utf16'){
for(i = 0, len = str.length; i < len; i++){
charCode = str.charCodeAt(i);
if(charCode <= 0xffff){
total += 2;
}else{
total += 4;
}
}
}else{
for(i = 0, len = str.length; i < len; i++){
charCode = str.charCodeAt(i);
if(charCode <= 0x007f) {
total += 1;
}else if(charCode <= 0x07ff){
total += 2;
}else if(charCode <= 0xffff){
total += 3;
}else{
total += 4;
}
}
}
return total;
}
分享到:
相关推荐
由于JavaScript中字符串的length属性是按照字节来计算的,对于ASCII字符集(0x00到0xff)中的字符来说,一个字符通常占用一个字节的长度。然而,对于中文、日文、韩文等使用双字节或多字节字符集的语言,使用length...
在JavaScript中,正确地计算字符串长度,特别是当字符串包含中文字符时,是非常重要的。中文汉字由两个字节表示,而英文字符通常只占一个字节。以下五个方法可以帮助你实现这个功能,确保无论中文还是英文,都能准确...
在实际应用中,可能还需要关注一些其他方面,例如,确保在用户粘贴大量文本时也能正确处理,以及在多语言环境下如何处理不同字符集的字节长度。同时,为了提供更好的用户体验,可以在用户输入时实时显示提示,告知...
在使用JavaScript进行编程时,判断字符串中字符的长度以及区分...如果使用的编码集不同(例如GBK),那么字符长度的计算方式也会有所不同。因此,在实际应用中,还需要根据具体的情况来调整代码以适应不同的编码环境。
在PHP中,`strlen()`函数可以自动根据字符集来计算字符串的长度,中文字符按照2或3个长度累加。而在JavaScript中,没有内置函数能直接做到这一点,因此需要我们自己实现一个计算GBK或UTF8编码字符串实际长度的函数。...
关于JavaScript判断字符长度及中英文数字等内容的知识点,主要围绕在编写代码时如何根据不同的字符集计算字符串的长度。由于不同字符占用的字节空间不同,传统的字符串长度判断方式并不适合于国际化需求,特别是在...
不同于JavaScript,Java提供了更多的编码支持,并且可以直接通过转换字符集的方式来实现长度的计算。这里采用的是将原始字符串先转换为GBK编码,然后再转换回ISO-8859-1编码,以此来计算长度。 #### 2. 代码示例 ``...
特别是在处理包含多种字符集(如英文与中文)的字符串时,考虑到不同字符编码长度的差异性,简单地按照字符数量进行截取可能会导致显示效果不佳或出现乱码等问题。本文将详细介绍一个专门用于处理中文字符串截取的...
此外,我们还将讨论如何计算字符串的打印长度,这在处理多语言或特定字符集时尤为有用。 ### 去除字符串两侧的空格 #### LTrim 方法 `LTrim` 方法用于去除字符串左侧的空格。这是通过使用正则表达式 `/^\s*/g` 来...
为了正确计算字符串的字节长度,我们可以将双字节字符替换为单字节字符,然后计算替换后字符串的长度。由于每个单字节字符占用一个字节,这样就可以通过计算长度直接得到实际的字节长度。 #### 替换方法 本篇文章...
首先,`getByteLen`函数用于计算字符串的实际长度。这个函数考虑到了字符编码的情况,它能够区分中文汉字和英文及数字字符。中文汉字通常占用两个字节的空间,而英文及数字通常占用一个字节的空间。`getByteLen`函数...
标题“JS最少代码实现随机十位字符串”涉及的是JavaScript编程中的一个常见任务——生成一个包含特定长度(这里是十位)的随机字符串。在Web开发中,这种功能可能用于创建唯一标识符、密码生成或者在URL中传递临时...
3. **字符转换**:此功能可能涉及到Unicode字符、ASCII字符和其他字符集之间的转换。例如,它可能帮助开发者处理特殊字符,如非ASCII的国际字符,或者将字符串中的特定字符替换为其他字符,这对于数据清洗和格式化...
遇到这么一个问题,数据库的字符集为UTF-8的,要在页面上使用JavaScript验证输入的文本用UTF-8存储时占用字节长度。JavaScript的String对象有length属性,但是这个计算的是字符数,不是字节数(问题总是翻来覆去的...
`aotu.js`可能是这个库的一个模块或者一个自定义函数集,它扩展了JavaScript的基础能力,使得在处理汉字字符时更加便捷。 生成汉字的过程通常涉及到以下几个步骤: 1. **字符编码**:汉字在计算机中通常以Unicode...
这个“js代码-统计--计算任意数据长度的百分比%”的项目显然涉及到如何使用JavaScript来处理这样的计算。下面将详细阐述相关知识点。 首先,我们来看`main.js`文件,它很可能包含了实现此功能的核心代码。...
这个`get_strlength`函数接受一个字符串作为参数,然后按照上述逻辑计算字符串的实际长度。这样,在处理中英文混合的字符串,尤其是需要确保不超出特定长度限制时,可以使用这个函数来准确地获取字符串的长度,避免...
在处理多语言或特殊字符集时,尤其需要注意编码问题,确保正确地计算和处理字符和字的长度,以避免出现乱码或数据丢失的情况。在实际开发中,一定要根据所使用的编程语言和编码方式选择合适的长度获取方法。
在JavaScript中,大部分字符串操作默认基于Unicode编码,这是一个广泛使用的字符集,包括了几乎所有的文字系统,如拉丁字母、希腊字母、汉字等。Unicode编码中,英文字符一般使用UTF-8编码,每个字符占用1个字节,而...