UTF编码字符串的总字节数计算

时间:2022-06-01 20:03:21


首先是在UTF-8编码下

占2个字节的:〇

占3个字节的:基本等同于GBK,含21000多个汉字

占4个字节的:中日韩超大字符集里面的汉字,有5万多个

一个utf8数字占1个字节

一个utf8英文字母占1个字节


来自

UTF-8的编码结构长度是根据某单个字符的大小来决定长度有多少。
下面为单个字符的大小占用几个字节。单个unicode字符编码之后的最大长度为6个字节。

  • 1个字节:Unicode码为0 - 127
  • 2个字节:Unicode码为128 - 2047
  • 3个字节:Unicode码为2048 - 0xFFFF
  • 4个字节:Unicode码为65536 - 0x1FFFFF
  • 5个字节:Unicode码为0x200000 - 0x3FFFFFF
  • 6个字节:Unicode码为0x4000000 - 0x7FFFFFFF

JS:

var str="zhong中国1234";
var byteSize = 0;
for (var i = 0; i < str.length; i++) {
var charCode = str.charCodeAt(i);
if (0 <= charCode && charCode <= 0x7f) {
byteSize += 1;
} else if (128 <= charCode && charCode <= 0x7ff) {
byteSize += 2;
} else if (2048 <= charCode && charCode <= 0xffff) {
byteSize += 3;
} else if (65536 < charCode && code <= 0x1FFFFF) {
byteSize += 4;
} else if (0x200000 < charCode && charCode <= 0x3FFFFFF) {
byteSize += 5;
} else if (0x4000000 < charCode && charCode <= 0x7FFFFFFF) {
byteSize += 6;
}
}
console.log('byteSize',byteSize);


‘〇’字符可以特判!