`

js获取字符串字节长度

    博客分类:
  • js
js 
阅读更多
你还认为一个中文字节长度是2吗?[align=center][/align]

一般项目中从前台js到后台java、数据库都是统一采用uft-8编码的,一般情况下在数据库中对每个字段都做了长度限制,所以在编写代码的过程中需要对js和java中的参数长度进行校验,否则在数据录入的时候难免会出错。因为js是一种若数据类型语言,没有将字符串直接转换成byte的方法,所以在校验字符byte长度时难免有人会直接将中文或某些特殊字符按2个长度计算,其实这样是不对的,看了下面的规则后可以去试一下。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,可以表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII相容,使用一至四个字节为每个字符编码。

其编码规则如下:
1.字符代码在000000 – 00007F之间的,用一个字节编码;
2.000080 – 0007FF之间的字符用两个字节;
3.000800 – 00D7FF 和 00E000 – 00FFFF之间的用三个字节,注: Unicode在范围 D800-DFFF 中不存在任何字符;
4.010000 – 10FFFF之间的用4个字节。

而UTF-16 则是定长的字符编码,大部分字符使用两个字节编码,字符代码超出 65535 的使用四个字节,如下:
1.000000 – 00FFFF 两个字节;
2.010000 – 10FFFF 四个字节。

附上js计算byte长度的代码:

/**
*
*/
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;
}

function test()
{
alert("byte size==" + sizeof("test字符长度【】"))
}

测试结果: byte size==22

再用java测试一下:
public static void main(String[] args) {
String str = "test字符长度【】";
byte[] bts = null;
try {
bts = str.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("byte size ==" + bts.length);
}
}
测试结果:byte size ==22

证明这是一致的吧,不死心的话再看看在什么情况下中文是2个字节;

public static void main(String[] args) {
String str = "test字符长度【】";
byte[] bts = null;
try {
bts = str.getBytes("gb2312");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("byte size ==" + bts.length);
}
}
测试结果:byte size ==16

在数据库中绝对不会以gb2312的编码格式存储字段,所以字符长度计算错误了的话赶紧改吧
分享到:
评论

相关推荐

    javascript的到字符串字节长度

    在标签“源码”和“工具”的上下文中,了解字符串字节长度的计算对于开发涉及数据传输、编码处理或者与不同编码系统交互的工具至关重要。例如,如果你正在构建一个Web应用,需要将用户输入的字符串发送到服务器,...

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

    本文讨论的是如何求中英文混杂字符串的字节长度的问题,并提供了一种使用Javascript语言求中英文混杂字符串字节长度的方法。 字节长度是指字符串占用的字节数量,它是计算机系统中最基本的存储单位。对于中英文混杂...

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

    本文详细介绍了在JavaScript中获取字符串字节数的方法,包括对英文字母和中文字符的处理。 首先,我们通常使用字符串对象的length属性来获取字符串中字符的数量。这个属性会返回字符串的长度,对于英文字符和标点...

    字符串按照指定的字节数来截取

    字符串是由字符组成的序列,而“字符串按照指定的字节数来截取”这个话题,就是指如何在字符串中提取固定字节数的部分。在不同的编程语言中,都有相应的函数或方法来实现这一功能。 在Python中,可以使用内置的`...

    JS版获取字符串真实长度和取固定长度的字符串函数

    为了解决这个问题,我们可以编写自定义函数来准确地获取字符串的真实长度,并进行截取。 首先,让我们详细了解一下`getStrActualLen`函数。这个函数的目的是得到字符串的实际长度,即考虑了双字节字符的长度。它...

    JS获取字符串实际长度(包含汉字)的简单方法

    总结来说,以上三种方法都可以用来获取字符串的实际长度,即能正确计算包含中文字符的字符串长度。方法一虽然直观但代码量稍大;方法二通过位运算简化了逻辑判断;而方法三则利用了正则表达式的替换功能,代码最为...

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

    本文详细介绍了如何利用JavaScript来判断字符串的字节数,并根据字节长度进行字符串的截取操作。这包括了判断字符串中的字节数和字符数、限制输入长度、以及如何在JavaScript中动态地处理HTML页面元素的值。接下来,...

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

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

    判断字符串的长度(优化版)中文占两个字符

    在处理含有中文字符的字符串长度计算时,由于中文字符通常占用的字节数多于英文字符,我们需要采用特殊的处理方法来确保长度计算的准确性。在传统的编程实践中,尤其是在使用JavaScript这样的编程语言时,一个简单的...

    js计算字符串长度包含的中文是utf8格式

    方法一: 代码如下:function byteLength(str) { var byteLen = 0, len = str.length;...JS获取字符串实际长度! 今天又添加一个小东西!一个程序员经常要用到的字符串长度检测方法,由于JS原先的长

    js将多出的字符串用省略号代替

    js 将多出的字符串用省略号代替 不是一般的那样获取字符串长度和字符字节来判断哦 ^_^ ;基本思路 ;很简单

    JavaScript获取中英文混合字符串长度的方法示例

    下面我们将详细讨论如何实现JavaScript获取中英文混合字符串长度的方法,并通过实例来解释。 首先,我们可以编写一个名为`StrLen`的函数,该函数接受一个字符串作为参数,然后逐个字符地检查字符串中的每个字符的...

    基64字节数组转基64字符串

    例如,前端可以通过JavaScript获取图片的Blob对象,然后使用`FileReader`的`readAsArrayBuffer`方法将Blob转换为字节数组,再调用`base64BinArrayToStr`函数将其转换为Base64字符串,这个字符串可以发送到服务器。...

    JS按字节截取字符长度实例

    `substring`用于获取字符串的子串,`charAt`用于获取指定位置的字符,`length`用于获取字符串的长度。 知识点七:字符串编码处理 在实际应用中,处理字符串时需要考虑编码方式,因为不同的编码方式中字符所占的字节...

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

    由于JavaScript中字符串的length属性是按照字节来计算的,对于ASCII字符集(0x00到0xff)中的字符来说,一个字符通常占用一个字节的长度。然而,对于中文、日文、韩文等使用双字节或多字节字符集的语言,使用length...

    js限制textarea每行输入字符串长度的代码.docx

    在JavaScript中,对`textarea`元素进行输入字符串长度限制是一个常见的需求,特别是在处理用户输入时,需要确保数据格式的正确性。在HTML中,`textarea`控件不像`input[type="text"]`那样可以直接通过`maxlength`...

    Js字符串操作函数大全(更新)

    本文将详细介绍一个JavaScript字符串操作集合,包括但不限于小数点处理、空格处理、数据类型校验、过滤特殊字符以及URL参数获取等功能。 #### 一、空格处理 在实际应用中,去除字符串前后的空格是非常常见的需求,...

    JavaScript实现的GBK、UTF8字符串实际长度计算函数

    由于JavaScript的字符串长度计算是以单个字符为单位,不区分字符编码,因此需要特别的函数来计算以GBK或UTF8编码的中文字符串的“实际长度”。 GBK字符集通常用于简体中文版的Windows系统和一些中文数据库。GBK编码...

Global site tag (gtag.js) - Google Analytics