`
windmerlin
  • 浏览: 4430 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

转载:用JavaScript计算字符串占用字节数

    博客分类:
  • J2SE
阅读更多

 

 

最近和JavaScript纠缠上了。

遇到这么一个问题,数据库的字符集为UTF-8的,要在页面上使用JavaScript验证输入的文本用UTF-8存储时占用字节长度。JavaScript的String对象有length属性,但是这个计算的是字符数,不是字节数(问题总是翻来覆去的,记得当年玩Delphi的时候,还得写程序计算字符串的字符数,因为Delphi中String的length是字节数...)。偷懒一点的办法是将验证代码中最大长度设置为数据库中对应字段的长度的1/3,但是这样准确来说有点不合适。

所以想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度:

UCS-2编码(16进制) UTF-8 字节流(二进制)
0000 - 007F 0xxxxxxx (1字节)
0080 - 07FF 110xxxxx 10xxxxxx (2字节)
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3字节)

 

于是代码如下:

function mbStringLength(s) {
        var totalLength = 0;
        var i;
        var charCode;
        for (i = 0; i < s.length; i++) {
          charCode = s.charCodeAt(i);
          if (charCode < 0x007f) {
            totalLength = totalLength + 1;
          } else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) {
            totalLength += 2;
          } else if ((0x0800 <= charCode) && (charCode <= 0xffff)) {
            totalLength += 3;
          }
        }
        //alert(totalLength);
        return totalLength;
      }

 

实际上,0x0080到0x07ff之间的字符很少会在实际用户输入中用到。

分享到:
评论

相关推荐

    javascript的到字符串字节长度

    以下是一个简单的示例,用于计算字符串在UTF-8编码下的字节长度: ```javascript function stringByteLength(str) { let byteLength = 0; for (let i = 0; i ; i++) { let charCode = str.charCodeAt(i); if ...

    用JavaScript计算在UTF-8下存储字符串占用字节数

    尤其在使用UTF-8编码的环境下,我们需要精确计算字符串所占用的字节数,因为这关系到数据库存储空间的分配、网络传输效率以及数据存储的准确性。JavaScript作为一门广泛应用于前端和部分后端开发的语言,提供了...

    统计字符串字节数统计字符串字节数

    这些示例展示了如何在不同编程语言中计算字符串的字节数,但要注意,对于包含多字节字符(如UTF-8中的非ASCII字符)的字符串,字节数会根据编码方式变化。因此,当你进行数据传输或存储时,了解字符串的编码和字节数...

    Javascript 计算字符串在localStorage中所占字节数

    文章提供的JavaScript函数`sizeof`是计算字符串所占字节数的实现。这个函数允许开发者传入两个参数:需要计算的字符串`str`和指定字符集`charset`(可选,默认为UTF-8)。函数内部根据字符集的不同来计算字符串的...

    如何求中英文混杂字符串的字节长度.pdf

    字节长度是指字符串占用的字节数量,它是计算机系统中最基本的存储单位。对于中英文混杂字符串,求其字节长度是一个复杂的问题,因为中文字串占用的字节数量与ASCII字符不同。 在BBS系统中,用户注册表单中的输入...

    Javascript 获取字符串字节数的多种方法

    在Web开发中,有时我们需要计算字符串的字节数,这在处理用户输入、文件上传限制或与API交互时尤为重要。在JavaScript中,有多种方法可以用来获取字符串的字节数。下面将详细介绍三种常见的方法。 #### 第一种方法...

    js获取字符串字节数方法小结

    在进行Web开发和程序设计时,了解如何在JavaScript中计算字符串的长度及其所占用的字节数是非常重要的。尤其是在处理包含中文或其他多字节字符的语言时,一个字符所占用的字节数可能与英文字符不同。本文详细介绍了...

    一句话jquery 取中文字节数

    例如,在UTF-8编码中,可以使用正则表达式来匹配非ASCII字符,并将其替换为特定的字符串(如题目中的"aa"),然后计算替换后的字符串长度即可得到中文字符的字节数。 ### 三、示例代码分析 #### 3.1 原始代码解析 ...

    js判断字节数

    下面是一种基于UTF-8的JavaScript函数,用于计算字符串的字节数: ```javascript function byteCount(str) { let byteLen = 0; for (let i = 0; i ; i++) { let charCode = str.charCodeAt(i); if (charCode ) ...

    JavaScript截取中文字符串

    ### JavaScript截取中文字符串知识点详解 #### 一、引言 在进行文本处理时,我们经常需要对字符串进行截取操作。特别是在处理包含多种字符集(如英文与中文)的字符串时,考虑到不同字符编码长度的差异性,简单地...

    javaScript判定提交内容是否超过数据库长度

    这就导致了使用length属性计算字符串长度时,中文字符的长度会被错误地计算为1。 2. length属性的局限性:由于length属性是基于字节计算的,所以对于UTF-8等多字节字符集,length属性直接返回的数值并不能准确反映...

    js获取提交的字符串的字节数

    ### JavaScript 计算字符串字节数的方法 在Web开发中,有时我们需要计算用户输入的字符串长度,特别是当涉及到中文字符时。这是因为一个英文字符通常占用一个字节的空间,而一个中文字符则占用两个或更多字节。对于...

    Javascript 字符串字节长度计算函数代码与效率分析(for VS 正则)

    本文主要介绍了在JavaScript中如何编写函数来计算字符串的字节长度,并且对于采用不同方法计算时的效率进行了对比分析。英文字符在大多数编码格式下占用一个字节,而中文字符通常占用两个字节,这一点在计算字节长度...

    标题过长使用javascript按字节截取字符串

    那么,如何在前端用JavaScript按照字节来截取字符串呢?下面将详细解读两种方法,一种是利用正则表达式,另一种是通过计算每个字符的字节长度。 首先,我们来看看如何使用正则表达式来获取字符串的字节长度。这个...

    字符串截取

    - 使用 `str.getBytes(charset).length` 方法计算字符串按照指定编码 `charset` 的实际字节数。 3. **匹配中文字符**: - 通过正则表达式 `^[\u4e00-\u9fa5]$` 匹配中文字符,若匹配成功则认为该字符占用 2 个字节...

    JS判断字符串字节数并截取长度的方法

    为了准确计算字节数,函数中应用了一个正则表达式`/[^\x00-\xff]/g`将所有非拉丁字符替换为`**`(这里的`**`代表的是拉丁字符范围之外的字节),然后通过获取替换后字符串的`.length`属性来计算字节数。这个过程确保...

    常用限制文本字节数的JS源代码程序

    - 计算处理后的字符串长度`newvalue.length`,即为当前输入的总字节数。 3. **长度检查与截断:** - 如果当前字节数不超过允许的最大字节数,则不做任何操作。 - 若超过最大字节数,则需要截断字符串。首先获取...

    Javascript将双字节字符转换成单字节字符并计算长度

    为了正确计算字符串的字节长度,我们可以将双字节字符替换为单字节字符,然后计算替换后字符串的长度。由于每个单字节字符占用一个字节,这样就可以通过计算长度直接得到实际的字节长度。 #### 替换方法 本篇文章...

    text-counter:显示输入的字符的字符数和字节数的页面

    为了计算字节数,可以将字符串转换为UTF-8编码的字节序列,然后计算其长度。在JavaScript中,可以使用`TextEncoder` API来实现这个功能。 项目可能还包括CSS(Cascading Style Sheets)来美化页面布局和样式。例如...

Global site tag (gtag.js) - Google Analytics