js获取字符串的字节长度
占用3个字节的范围
U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个
U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 - 0xE2 0xBF 0x95 共 213 个
U+3005 - U+3029 : 0xE3 0x80 0x85 - 0xE3 0x80 0xA9 共 36 个
U+3038 - U+4DB5 : 0xE3 0x80 0xB8 - 0xE4 0xB6 0xB5 共 7549 个
U+4E00 - U+FA6A : 0xE4 0xB8 0x80 - 0xEF 0xA9 0xAA 共 44138 个
U+FA70 - U+FAD9 : 0xEF 0xA9 0xB0 - 0xEF 0xAB 0x99 共 105 个
合计: 52156 个
占用4个字节的范围
U+20000 - U+2FA1D : 0xF0 0xA0 0x80 0x80 - 0xF0 0xAF 0xA8 0x9D 共 64029 个
合计: 64029 个
所以,我认为答案应该是:3个或4个字节。
方法一:循环遍历
参考:http://www.cnblogs.com/sniper007/p/3309787.html
1 //字符编码数值对应的存储长度: 2 //UCS-2编码(16进制) UTF-8 字节流(二进制) 3 //0000 - 007F 0xxxxxxx (1字节) 4 //0080 - 07FF 110xxxxx 10xxxxxx (2字节) 5 //0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3字节) 6 String.prototype.getBytesLength = function() { 7 var totalLength = 0; 8 var charCode; 9 for (var i = 0; i < this.length; i++) { 10 charCode = this.charCodeAt(i); 11 if (charCode < 0x007f) { 12 totalLength++; 13 } else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) { 14 totalLength += 2; 15 } else if ((0x0800 <= charCode) && (charCode <= 0xffff)) { 16 totalLength += 3; 17 } else{ 18 totalLength += 4; 19 } 20 } 21 return totalLength; 22 } 23 var str="你好吗?111?"; 24 alert("字符数"+str.length+" ,字节数"+str.getBytesLength()); 25 //Java中的字节数==="字符串".getBytes("UTF-8").length 26 //-->
方法二:使用正则表达式
待整理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人