600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > js字符串编码和unicode编码互转

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

时间:2021-09-01 15:47:08

相关推荐

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

//字符串编码转为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 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。