js 判断字节流是否可以按照utf8编码转成字符串
下面的代码是我网上找的其他语言的实现方式改的js版本的,原版本的地址找不见了,但是我们还是要先感谢下原版本的作者
不同于原版本,因为UTF8兼容ASCII,纯ASCII字节流也能用utf8转成字符串,因此也会返回true,我这个函数只能用来判断是否能用utf转,而不确定编码是不是utf8
//判断传入的字节流能否使用utf8转成可读字符串 function canUseUTF8(buffer) { if (buffer.length > 0 && buffer[0] == 0) { return false; //首字节为0的就不是可读字符串 } var i = 0; while (i < buffer.length) { var b = buffer[i++]; var count; //判断是否符合utf8格式,并且确定后续的字节数 if (b <= 127) { //0xxxxxxx count = 0; } else if (b >= 194 && b <= 223) { //110xxxxx 10xxxxxx count = 1; } else if (b >= 224 && b <= 239) { //1110xxxx 10xxxxxx 10xxxxxx count = 2; } else if (b >= 240 && b <= 244) { //11110xxx 10xxxxxx 10xxxxxx 10xxxxxx count = 3; } else { return false; //不符合utf8格式的首字节 } while (count > 0 && i < buffer.length) { b = buffer[i++]; if (b < 128 || b > 191) { //utf的非首字节处于128-191之间,因为10xxxxxx return false; } count--; } } return true; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署