一般来说英文是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,过长自动截取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)