JS计算UTF8字符串占用字节数(escape版与UTF8专用版)

JS中三种编码方式(escape,encodeURI,encodeURIComponent) NULL 博文链接:https://liuzidong.iteye.com/blog/829204 立即下载

使用escape是为了使所有编码都转换成统一的编码格式(Unicode), 如GBK编码的"中国", 与UTF8编码的"中国",它们的escape返回值都是一样的,所以代码具有通用性,且escape在JS1.0已经有了,各浏览器都通用

如果不考虑通用性,且html为UTF8编码的,可以用UTF8版本

escape版:

  1. function utf8_strlen(str)
  2. {
  3.     var str_encode = escape(str);
  4.     var cnt = 0;
  5.     for( i=0; i<str_encode.length; i++)
  6.     {
  7.         if( str_encode.charAt(i) == "%")
  8.         {
  9.             if( str_encode.charAt(i+1) == "u" )
  10.             {
  11.                 var value = parseInt(str_encode.substr(i+2,4),16);
  12.                 if( value < 0x0800)
  13.                 {
  14.                     cnt += 2;
  15.                 }
  16.                 else
  17.                 {
  18.                     cnt += 3;
  19.                 }
  20.                 i = i+5;
  21.             }
  22.             else
  23.             {
  24.                 cnt++;
  25.                 i = i+2;
  26.             }
  27.         }
  28.         else
  29.         {
  30.             cnt++;
  31.         }
  32.     }
  33.     return cnt;
  34. }

 

UTF8专用版:

  1. function utf8_strlen2(str)
  2. {
  3.     var cnt = 0;
  4.     for( i=0; i<str.length; i++)
  5.     {
  6.         var value = str.charCodeAt(i);
  7.         if( value < 0x080)
  8.         {
  9.             cnt += 1;
  10.         }
  11.         else if( value < 0x0800)
  12.         {
  13.             cnt += 2;
  14.         }
  15.         else 
  16.         {
  17.             cnt += 3;
  18.         }
  19.     }
  20.     return cnt;
  21. }

 

 

用JavaScript计算在UTF-8下存储字符串占用字节数 想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度 立即下载

相关推荐

js计算字符串长度包含的中文是utf8格式

使用js写的计算字符串长度且其中中文是utf8格式的,具体的实现如下,感兴趣的朋友可以参考下

记一次 unicode-escape 和 utf-8 编码的互解

记一次 unicode-escape 和 utf-8 编码的转换 是这样的,我在做 CTF 题的 RC4 编码时遇到一个 base64 加密后输出的密文: mg6CITV6GEaFDTYnObFmENOAVjKcQmGncF90WhqvCFyhhsyqq1s= . . 直接 base64 解密后发现输出的是: b"\x9a\x0e\x82!5z\x18F\x85\r6’9\xb1f\x10\xd3\x80V2\x9cBa\xa7p_tZ\x1a\xaf\x08\\xa1\x86\xcc\xaa\xab

沐一 · 林 的博客 3382

js escape,unescape解决中文乱码问题的方法

1.escape 方法 对 String 对象编码以便它们能在所有计算机上可读, escape(charString) 必选项 charstring 参数是要编码的任意 String 对象或文字。 说明 :   escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以 及 其他非 ASCII字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是” ” 。 字符值大于 255 的以 %uxxxx 格式存储。   注意 :escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其

JS实现:计算字符串的字节数(UTF8编码)

这种编码方式规定,1个Unicode字符占用1~4个字节(如上文JS代码所示),可兼容ASCII码,且由于其使用更合理的内存分配,因此内存占用比UTF-16更小。Unicode仅仅是一套字符集,并非编码,因为它没有定义 每个字符在计算机中的存储方式(即占用多少字节),而ASCII、UTF-8、UTF-16才算是编码。ASCII编码:由美国制定的一套字符集,也是一种编码方式,主要用于英语环境,对应了英文字母、数字、特殊字符和控制字符 等等,它规定1个字符只占用1个字节。),但没有定义1个字符占用多少字节。

苍老师背后的男人 1920

国内网络环境下Leaflet加载OpenStreetMap地图的5种替代方案(附可用瓦片地址)

本文针对国内网络环境下Leaflet加载OpenStreetMap地图的常见问题,提供了5种可用的瓦片替代方案,包括OpenStreetMap.fr HOT、OpenStreetMap.de、CartoDB、Stamen和Thunderforest,并附上详细的代码示例和选择建议,帮助开发者解决地图加载问题。

qsc901234的博客 1695

IEC61850客户端连接实战:CMS vs MMS协议抓包对比与性能初探(基于YX-PIS协议栈)

本文深入探讨了IEC61850客户端连接中CMS与MMS协议的抓包对比与性能优化。通过Wireshark抓包分析、协议栈配置实战和性能基准测试,揭示了两种协议在连接建立、数据交互和性能调优方面的关键差异,为智能电网自动化系统的协议选择提供了实用指南。

weixin_29209805的博客 216

完善的(escape/unescape/unicode_utf8)PHP互转函数

参考文章http://tech.163.com/05/0516/10/1JS9KEGA00091589.htmlUTF编码UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:UCS-2编码(16进制)UTF-8 字节流(二进制)0000 - 007F0xxxxxxx0080 - 07FF110xxxxx 10xxxxxx

goingdownba的专栏 907

TypeScript的安装与使用

TypeScript的安装与使用

qq_51589308的博客 600

同时存在unicode-escape和utf-8的解码方法

在爬取lc提交代码的时候遇到的一个问题,在爬取到的源码中,符号是采用unicode-escape编码的,而其中的中文是采用utf-8编码的,正常解码无论怎样都会出现乱码,本文记录下解决办法。 文章目录示例解决办法 示例 下面是lc第一题爬取的源码,编码为"utf-8",中文可以正确显示,但是换行符等符号并不能正确显示,因此需要转换。 code = "class Solution:\u000A def twoSum(self, nums: List[int], target: int) \u002D

文艺圈不知名刘先生 3783

【工具使用】Keil常用的调试操作整理介绍

2、当选择了非0级优化时,调试可能会变得困难,具体表现在断点调试。该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的置。:如果是在C语言窗口中,则是按单条语句执行,与单步调试不同的是,遇到函数不会进入函数内部,而是直接全速运行函数,并跳到下一条语句。但我的Keil软件中无法显示这个视图,并且通过修改系统试图,调试时,点击打开系统视图发生了闪退的现象,目前能想到的原因是:重新安装Keil,安装最新版本。

MEYOU_Cc 不吃香菜! 1万+

关于Fluent模拟中的动态接触角UDF实现,详细设计

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1147

linux编码utf-8所占字节计算,Javascript 计算字符串所占字节数

最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的。而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16。因此本文只对这两种编码进行讨论。UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,可以表示Unicode标准中的任何字符,...

weixin_28829325的博客 542

火焰烟雾识别系统【数据集+源码+UI界面】

数据集准备:收集并标注火焰与烟雾数据。YOLOv10训练:训练YOLOv10模型来识别火焰和烟雾。实时检测:通过摄像头视频流进行实时检测,并显示检测结果。UI界面设计:用Tkinter设计简易界面,显示检测结果。完成以上步骤后,可以实现一个完整的火焰烟雾识别系统,具备实时检测与友好的用户界面。

2201_76125393的博客 1135

在JavaScript中检测含中文的字符串在UTF-8编码下占用的字节数

在前台向后台传输数据时,如果后台需要校验所传输的字符串长度,且后台编码为UTF-8编码格式时(比如Golang环境),需要在js环境下检测字符串(可能含有中文等全角字符)在UTF-8编码下占用的字节数。

weixin_41621706的博客 779

Codex,Copilot 是什么

GitHub Copilot是什么 **GitHub Copilot** 是一款由 **GitHub** 和 **OpenAI** 合作开发的 **AI 代码辅助工具**,它基于 **OpenAI Codex 技术**,能够根据上下文自动生成代码建议,大幅提升编程效率

ZhangJiqun&191cm&85kg 6816

基于改进Unet的多场景水果图像分割与分类研究

本文针对复杂场景下的水果图像分割问题,提出了一种改进Unet模型。通过构建包含8类水果、3种成熟度及多种干扰场景的数据集,采用ResNet50与MobileNetV3作为骨干网络,并在跳跃连接层集成CBAM注意力机制。实验表明,改进模型在测试集上达到91.6%的mIoU,推理速度提升23%,特别在重叠水果和低光照场景表现突出。研究为农业视觉检测提供了有效解决方案。

AI的内部世界的博客 304

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

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

4922

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

怎么用javascript 计算UTF-8编码字符串占用的字节长度

[size=large][color=blue]想在页面上计算下字节长度,因为太长后面就不能插入数据库了,所以特别纠结,咋样限制用户的输入呢? 研究了很久,最后搞了个比较满意的计算方法。 这里是用来计算UTF-8编码占用的字节长度。[/color][/size] [size=large][b][color=red]关键字:怎么用js,javascript 计算UTF-8编码字符串占用的字节长度...

jingchh的专栏 1893

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql存储的内容过长_用js如何正确判断输入的内容存储在mysql的长度是多少?

utf8是变长编码的字符存储方式,utf8mb4只是每个字符最大长度占4字节,而非任一字符都占4字节。原本MySQL的utf8只能储存基本多语言平面(BMP)上的字符。utf8mb4编码之下,BMP上的字符和utf8编码完全相同,常用汉字仍然只占3个字节,真正占用四个字节的字符常见的只有姓名生辟字和表情符号。在MySQL数据库中varchar字段的长度是按字符来描述的,而不是字节,所以“年薪30K...

weixin_36314729的博客 277

字节、字符的区别,一个汉字是占两个字节还是两个字符?

在Oracle数据库中,VARCHAR2 数据类型的长度是以字节(bytes)为单位的,而不是字符(characters)。这里需要注意的是,字节和字符是两个不同的概念,但在某些编码方式下,一个汉字字符的存储需要两个字节的空间。5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节。4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)

程序员伍一的笔记 4202

字符串长度

当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。(测试时编码方式是UTF8) 复制代码 代码如下:$str=‘中文a字1符‘; echo strlen($str); echo ‘‘; echo mb_strlen($str,‘UTF8‘);

fl49809045的专栏 883

前端需要搞懂的字符编码ASCII、Unicode、UTF8、UTF16等

在前端开发中,Javascript程序是使用Unicode字符集,Javascript源码文本通常是基于UTF-8编码。 但js代码中的字符串类型是UTF-16编码的,这也是为什么会碰到api接口返回字符串在前端出现乱码,因为多数服务都使用utf-8编码,前后编码方式不一致。...

jimojianghu的专栏 3897

深入解析字符串与ASCII码转换:原理、实践与多语言实现

字符编码是计算机处理文本信息的基石,它定义了字符与二进制数字之间的映射关系。ASCII码作为最早的通用编码标准,其核心原理是为128个英文字符、数字及控制符分配唯一的数值(0-127),实现了文本在计算机中的标准化存储与传输。理解这一转换机制具有重要技术价值,它是确保数据在不同系统间正确交换、避免乱码的关键,也是学习更复杂编码(如UTF-8)的基础。在实际的工程实践中,无论是网络协议通信、文件读写,还是数据加密混淆,都离不开对字符串与字节序列的精确转换。本文以Java、Python和JavaScript为例

weixin_30381317的博客 424

6. Go语言—字符串操作

一、字符串支持的转义字符 \r 回车符(返回行首) \n 换行符(直接跳到下一行的同列位置) \t 制表符 \' 单引号 \" 双引号 \\ 反斜杠 \uXXXX Unicode字符码值转义,例如 "\u5eb7" 就是 "康" ​ Go语言中字符串的顶层结构是由一个指针和长度构成的。使用 unsafe.Sizeof("") 会得到16长度,其中8个字节是指针,指向字符串的内存地址,8个...

weixin_30784945的博客 195

JavaScript中的字符编码与二进制数据处理详解

字符编码是计算机科学中的基础概念,它定义了字符与二进制数据之间的映射关系。从ASCII到Unicode,编码标准不断演进以满足多语言需求。JavaScript内部采用UTF-16编码,但通过TextEncoder/TextDecoder API支持多种编码转换。理解位(bit)、字节(byte)和字符(char)的关系对处理二进制数据至关重要,特别是在网络通信、文件操作等场景中。现代JavaScript提供了ArrayBuffer、TypedArray等工具高效处理二进制数据,同时Base64、URL编码等

weixin_33739523的博客 300
上一篇: 理解Symbian的命名规则
SpriteLW
博客等级 码龄22年 11粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值