javascript中一个字符占几个字节

javascript中一个字符占几个字节,第1张

一般来说英文是1个,中文是两个。但是会根据编码方式不同而不同。以下是搬运:

英文字母和中文汉字在不同字符集编码下的字节

英文字母:

字节数 : 1;编码:GB2312

字节数 : 1;编码:GBK

字节数 : 1;编码:GB18030

字节数 : 1;编码:ISO-8859-1

字节数 : 1;编码:UTF-8

字节数 : 4;编码:UTF-16

字节数 : 2;编码:UTF-16BE

字节数 : 2;编码:UTF-16LE

中文汉字:

字节数 : 2;编码:GB2312

字节数 : 2;编码:GBK

字节数 : 2;编码:GB18030

字节数 : 1;编码:ISO-8859-1

字节数 : 3;编码:UTF-8

字节数 : 4;编码:UTF-16

字节数 : 2;编码:UTF-16BE

字节数 : 2;编码:UTF-16LE

function numToByte(num) {  

        var bytes = new Array();  

        var len, c;  

        var str = String(num);

        len = strlength;  

        for(var i = 0; i < len; i++) {  

            c = strcharCodeAt(i);  

            if(c >= 0x010000 && c <= 0x10FFFF) {  

                bytespush(((c >> 18) & 0x07) | 0xF0);  

                bytespush(((c >> 12) & 0x3F) | 0x80);  

                bytespush(((c >> 6) & 0x3F) | 0x80);  

                bytespush((c & 0x3F) | 0x80);  

            } else if(c >= 0x000800 && c <= 0x00FFFF) {  

                bytespush(((c >> 12) & 0x0F) | 0xE0);  

                bytespush(((c >> 6) & 0x3F) | 0x80);  

                bytespush((c & 0x3F) | 0x80);  

            } else if(c >= 0x000080 && c <= 0x0007FF) {  

                bytespush(((c >> 6) & 0x1F) | 0xC0);  

                bytespush((c & 0x3F) | 0x80);  

            } else {  

                bytespush(c & 0xFF);  

            }  

        }  

        return bytes;  

    }

    

var bytes = numToByte(12);

consolelog(bytes);

<div>

<textarea id="txtPrizeNote" runat="server" height="74px" width="480px" maxlength="10"

style="width: 480px; height: 74px; float: left"></textarea>

<span style="color: Red;"></span><br />

剩余字数:<span id="showmsg" style="color: red"></span>

<script type="text/javascript">

//返回val的字节长度

function getByteLen(val) {

var len = 0;

for (var i = 0; i < vallength; i++) {

if (val[i]match(/[^\x00-\xff]/ig) != null) //全角

len += 2;

else

len += 1;

}

return len;

}

//返回val在规定字节长度max内的值

function getByteVal(val, max) {

var returnValue = '';

var byteValLen = 0;

for (var i = 0; i < vallength; i++) {

if (val[i]match(/[^\x00-\xff]/ig) != null)

byteValLen += 2;

else

byteValLen += 1;

if (byteValLen > max)

break;

returnValue += val[i];

}

return returnValue;

}

$(function() {

var _area = $('textarea#txtPrizeNote');

var _info = _areanext();

var _max = _areaattr('maxlength');

var _val;

_areabind('keyup change', function() { //绑定keyup和change事件

if (_infofind('span')size() < 1) {//避免每次d起都会插入一条提示信息

_infoappend(_max);

}

_val = $(this)val();

_cur = getByteLen(_val);

if (_cur == 0) {//当默认值长度为0时,可输入数为默认maxlength值

_infotext(_max);

} else if (_cur < _max) {//当默认值小于限制数时,可输入数为max-cur

_infotext(_max - _cur);

} else {//当默认值大于等于限制数时

_infotext(0);

$(this)val(getByteVal(_val,_max)); //截取指定字节长度内的值

}

});

});

</script>

详细出处参考:>

一个字节由8位二进制位组成。

因为数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

绑定文本框的change事件

$("input")change(function(){

    var value=$(this)val();

    if(valuelength>10){

        // 内容超长了

        alert("长度不能大于10")

        return false;

    }

    else if(valuelength<4){

        // 提示长度要大于4

        alert("长度要大于4");

    }

});

1、文字长度不能大于15个字节。(中文算两个字节)

正则表达式做:

var bytesLen = 文本内容replace(/[^\x00-\xff]/g, 'xx')length;

if (bytesLen > 15){

alert("不能大于15字节");

}

2、不用正则的话就用 charCode 判断charCode 大于 255的就是汉字

纯js不用正则 :

function getBytes(str) {

var byteLen = 0;

for ( var i = 0; i < strlength; i++) {

if (strcharCodeAt(i) > 255) {

byteLen += 2;

} else {

byteLen += 1;

}

}

return byteLen;

}

你把问题说得莫名其妙呀——“按照字节数量截取部分字符串,组成新的一个字符”——截取的部分字符串,怎么组成一个字符??JS按照UTF16编码,即一个字符占两个字节,不过在JS里你最好忘记“字节”的概念,只计算字符个数就够了,不要管每个字符占多少字节。

以上就是关于javascript中一个字符占几个字节全部的内容,包括:javascript中一个字符占几个字节、JS 整数 转 4个长度的 bety[]数组、jquery或js判断字符输入个数(数字英文长度记为1,中文记为2,过长自动截取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9458469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存