码迷,mamicode.com
首页 > Web开发 > 详细

js字符串编码和unicode编码互转

时间:2018-04-26 14:03:37      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:个数   字符   理解   turn   cape   处理   getview   toc   highlight   

//字符串编码转为unicode编码
function charToUnicode(str) { let temp; let i = 0; let r = ‘‘; let len = str.length; for (; i < len; i++) { temp = str.charCodeAt(i).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("??") // true
is32Bit("啊") // false
is32Bit("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 }

  

  

js字符串编码和unicode编码互转

标签:个数   字符   理解   turn   cape   处理   getview   toc   highlight   

原文地址:https://www.cnblogs.com/xuanbingbingo/p/8951743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!