js中的字符长度问题

2023-10-26

今天遇到一个小问题,使用UTF-8这种Unicode编码存储格式时,用js中的字符串的length属性获取输入框中输入的字符长度时,输入中文也是按一个字符算,刚才查了下资料,原来在JS中字符串的长度不分中英文字符, 每一个字符都算一个长度,于是自己写了个strlen函数,让它按输入一个英文字符算一个字符,一个中文字符算三个字符来算字符个数:

function getstrlen(str){
var len=0;
for(var i=0;i< str.length;i++){
    var code=str.charCodeAt(i);
    if(code<=0&&code<=128){
            len=len+1;
    }else len=len+3;
   }
   return len;
}

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。)


备忘:
转自[1]http://www.php100.com/html/it/biancheng/2015/0316/8789.html
[字符编码ASCII,Unicode和UTF-8概念扫盲]


Unicode是一种符号集,能存储世界上所有文字符号,所以是一种通用的编码,而UTF-8则是最通用的Unicode编码的存储格式,UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。
下表总结了编码规则,字母x表示可用编码的位。
Unicode符号范围 | UTF-8编码方式
(十六进制) | (二进制)
——————–+———————————————
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js中的字符长度问题 的相关文章

随机推荐

  • RobotFramework 安装步骤

    Robot Framework 通用型黑盒自动化框架 框架优点 1 测试报告 2 执行部分用例 冒烟测试 3 初始化清除 一 安装Python3 建议3 6版本以上 二 安装RobotFramework 进入dos窗口 输入pip inst
  • 使用 Gitee + PicGo + Typora 搭建图床

    图床搭建过程简单 该博客只是为了记录并测试刚搭建好的图床 一 Gitee 1 新建仓库 填写好下图红框所示 并且选择开源 创建完后会跳转到仓库 记住这个网址 等下会在PicGo中用到 2 获取takon私人令牌 打开设置 点击私人令牌 生成
  • 最大子序列和问题以及确定序列起终点位置

    在学习数据结构遇到的第一个问题就是一个最大子序列和的问题 以PAT 点击打开链接 上的一道题作为例子来总结一下求解这类问题时一些常用的方法 网上讲述子列和问题的博客及文章已经很多了 这里就不在阐述穷举法和递归法的方式来求解了 有需求的小伙伴
  • Qt界面编程(二)—— Qt 5 帮助文档的详解

    学习Qt开发 肯定离不开帮助文档的使用 因为它不像 C 语言那样就那么几个函数接口 Qt的接口可以用海量来形容 常用的我们可能能记住 其它的真的没有必要去记 用到什么就去帮助文档查看用法 Qt5帮助文档地址 官网地址 https doc q
  • php微信怎么获取code,微信支付的Code如何获取?

    微信支付的问题 1 微信公众号帐号支付 2 微信支付授权目录 3 微信Code获取 用的是PHP开发 之前下载的是php微信sdk 下载集成到产品里一切正常 只要按官网步骤来做 应该不会出问题 后台应用环境变更 PHP只做中间层 后端是C
  • XAMPP 的安装配置(Linux 版)

    转载时请保留下面 以供大家加我MSN 增强交流 共同学习 姜庭华 msn jaimejth live cn 博客 http blog csdn net jaimejth 软件下载在以下网站 http www apachefriends or
  • 计算机网络 第四章网络层(5)BGP 协议路由器的结构远程接入 隧道技术虚拟专用网 和网络地址转换 NATRPB多播路由选择 网际组管理协议 IGMP多播 IP 地址

    关注公众号凡花花的小窝 收获更多的考研计算机专业编程相关的资料 BGP 发言人交换路径向量 主干网还可发出通知 要到达网络 N5 N6 和 N7 可沿路径 AS1 AS3 BGP 协议的特点 BGP 协议交换路由信息的结点数量级是自治系统数
  • 【2022-New】Flutter doctor 检测报错,Android toolchain - develop for Android devices

    错误一 cmdline tools component is missing 缺少 cmdline tools 组件 解决方案 点击开发工具左上角 依次点击 file gt settings gt Appearance Behavior g
  • leetcode 312 戳气球

    312 戳气球 相关企业 有 n 个气球 编号为0 到 n 1 每个气球上都标有一个数字 这些数字存在数组 nums 中 现在要求你戳破所有的气球 戳破第 i 个气球 你可以获得 nums i 1 nums i nums i 1 枚硬币 这
  • 如何用python写OLS模型

    你好 使用 Python 写 OLS 模型可以使用 statsmodels 库中的 OLS 模块 首先 你需要导入所需的库 import statsmodels api as sm 然后 准备你的自变量和因变量的数据 这些数据可以使用 Pa
  • java:String使用equals和==比较的区别

    操作符的作用 1 用于基本数据类型的比较 2 判断引用是否指向堆内存的同一块地址 equals所在位置 在Object类当中 而Object是所有类的父类 包含在jdk里面 但并不适合绝大多数场景 通常需要重写 public boolean
  • [JAVA][2013蓝桥杯预赛 JAVA本科B组][有理数类]

    标题 有理数类 有理数就是可以表示为两个整数的比值的数字 一般情况下 我们用近似的小数表示 但有些时候 不允许出现误差 必须用两个整数来表示一个有理数 这时 我们可以建立一个 有理数类 下面的代码初步实现了这个目标 为了简明 它只提供了加法
  • OpenCV - SVM算法原理实现以及SVM图像分割

    支持向量机的原理这里也就不阐述了 我也不太会 我大概的理解就是和KNN一样是个分类器 可以想象以下 两类样本点可以用很多条线分开 但是那一条是最优呢 支持向量机中利用支持向量 可能是样本中的几个点 具体怎么取这个向量不需要我们考虑 然后计算
  • MySQL解压版安装步骤

    百度网盘有安装版 解压包安装包以及visual插件 链接 https pan baidu com s 1XXvWa40FYX5mtqofW knIg 提取码 ky2q 下载地址 https downloads mysql com archi
  • Windows安装WSL详解

    title Windows安装WSL详解 author Mir小熊 date 2022年07月21日 weather 32 C 22km h summary categories 装机 tags Windows WSL 此篇文章是基于Win
  • Virtual Functions___CH_18

    18 1 Pointers and references to the base class of derived objects In the previous chapter you learned all about how to u
  • Typescript系列(三):TS入门教程之函数详解

    文章待更新
  • 【论文解读】Unsupervised Single Image Dehazing Using Dark Channel Prior Loss_IEEE TRANS 2018

    代码地址 https github com AlonaGolts Deep Energy 论文地址 https ieeexplore ieee org document 8897130 目录 Abstract Introduction 背景
  • 基于Xilinx ZYNQ和7 Serises FPGA的MIPI DPHY 接口实现分享

    作者 Hello Panda 这次分享一个在Xilinx FPGA实现MIPI DPHY接口的案例 包括CIS协议层 截止目前为止 Xilinx仅在Ultrascale 及其以上版本的FPGA IO可直接支持MIPI 电平输入 其他的 都需
  • js中的字符长度问题

    今天遇到一个小问题 使用UTF 8这种Unicode编码存储格式时 用js中的字符串的length属性获取输入框中输入的字符长度时 输入中文也是按一个字符算 刚才查了下资料 原来在JS中字符串的长度不分中英文字符 每一个字符都算一个长度 于