博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js字符串编码和unicode编码互转
阅读量:5859 次
发布时间:2019-06-19

本文共 1232 字,大约阅读时间需要 4 分钟。

 

//字符串编码转为unicode编码

function charToUnicode(str) {    let temp;    let i = 0;    let r = '';      for (let val of str) {        temp = val.codePointAt(0).toString(16);          while ( temp.length < 4 )        temp = '0' + temp;          r += '\\u' + temp;    };     return r;}

//unicode编码转为字符串编码

function unicodeToChar(str){   //方案一  return eval("'" + str + "'");  //方案二  return unescape(str.replace(/\u/g, "%u"));  }
//js获取字符串长度(字符真实个数)//由于es5之前都将此类四个字节组成的字符"?"("?".length == 2)处理成2个长度,所以使用"for of"方法可以正确遍历字符串的长度function getLength(str){    let length = 0;    for(let val of str){        length++    }          return length  }

  

//codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。function is32Bit(c) {  return c.codePointAt(0) > 0xFFFF;}is32Bit("?") // trueis32Bit("啊") // falseis32Bit("a") // false

  

//实际使用中,一般设计会认为中文字符如'啊','哦','额',','等理解为为两个长度,英文字符和数字如'a','1',','等理解为为一个长度,所以此方法可以获取他们认为的字符串长度(注意,不是字符串的真是长度,只是设计师理解的长度)function getViewLength(str){    let length = 0;    for (let c of str){//注意使用for of可以正确的遍历字符串的长度,而其他方法会将"?"当成两个长度遍历        if(c.codePointAt(0) > 0x00FF){length = length + 2}//不管是两个字节的字符如'啊',还是四个字节的字符'?',都'当成'是属于两个字符长度的范围
' else{length++} } return length }

  

  

转载于:https://www.cnblogs.com/xuanbingbingo/p/8951743.html

你可能感兴趣的文章
C++中的函数指针模板
查看>>
2015年个人总结
查看>>
C#编程(六)------------枚举
查看>>
高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-2 发布
查看>>
ZOJ 3316 Game 一般图最大匹配带花树
查看>>
《系统架构师》——操作系统和硬件基础
查看>>
如何看待一本图书
查看>>
angularjs1-7,供应商
查看>>
oracle参数列表
查看>>
Wordpress3.2去除url中的category(不用插件实现)
查看>>
The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine-Excel2003
查看>>
macOS Sierra 代码显示未来 Mac 将搭载 ARM 芯片
查看>>
《Arduino家居安全系统构建实战》——1.3 部署安全系统的先决条件
查看>>
Linux 中如何通过命令行访问 Dropbox
查看>>
《jQuery移动开发》—— 1.3 小结
查看>>
使用 Flutter 反序列化 JSON 的一些选项
查看>>
开发进度——4
查看>>
etymology-F
查看>>
Mycat安装以及使用测试
查看>>
JS里验证信息
查看>>