当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JavaScript字符集编码与解码详谈

JavaScript字符集编码与解码详谈

2019年03月27日  | 移动技术网IT编程  | 我要评论
一、字符集 1)字符与字节(character) 字符是各种文字和符号的总称,包括乱码;一个字符对应1~n个字节,一字节对应8位,每位用0或1表示。 2)字符集(ch

一、字符集

1)字符与字节(character)

字符是各种文字和符号的总称,包括乱码;一个字符对应1~n个字节,一字节对应8位,每位用0或1表示。

2)字符集(character set)

字符集是多个字符的集合,每个字符集包含的字符个数不同,常见字符集名称:ascii字符集、gb2312字符集、unicode字符集等。

3)字符集编码(character encoding)

字符集编码就是将符号转换为计算机可读的二进制,解码就是把二进制转换为人类可读的符号。

字符集大多对应一种编码方式(例如gbk对应gbk编码),但unicode编码有多种,包括utf-8、utf-16、utf-32和utf-7。

目前网页用的最多的就是“utf-8”,utf-8使用一至四个字节为每个字符编码,是ascii的一个超集,所以现存的ascii文本不需要转换

二、浏览器进制

1)html属性中使用十进制和十六进制

十进制在html中可使用“8”,十六进制,则使用“Z”,比十进制多了个x,进制码中也多了a~f这6个字符来表示10~15。

2)css属性中使用十进制和十六进制

css兼容html的进制形式,除此之外,十六进制还可以使用“\6c”的形式来表示。

3)javascript编码封装

可以直接通过eval执行字符串八进制和十六进制两种编码方式,其中八进制用“\56”表示,十六进制用“\x5c”表示。

如果代码中应用了汉字并且需要进行进制编码,那么只能进行十六进制unicode编码,其表示形式为:“\u4ee3\u7801”。

在“web前端黑客技术揭秘”中经封装了两个方法来做编码和解码,主要用到了下面两个方法,具体代码可查看此处。

核心代码是:“str.charcodeat(char).tostring(进制)”与“string.fromcharcode(parseint(code,进制))”

charcodeat() 方法返回0到65535之间的整数,表示给定索引处的utf-16代码单元

静态string.fromcharcode() 方法返回使用指定的unicode值序列创建的字符串。

还可以通过一个在线网页进行编码解码“monyerjs”。

4)html自动解码机制

例如在网页中输入16进制的“Hello”,自动就会解码为“hello”。

还有一些比较熟知的空格“ ”也是这种机制。

三、浏览器编码

javascript中有三对可以对字符串编码解码的函数,分别是:

escape/unescape、encodeuri/decodeuri、encodeuricomponent/decodeuricomponent。

主要的区别还是不编码的字符个数。

1)escape不编码的字符有69个

*、+、-、.、/、@、_、0~9、a~z、a~z而且escape对0~255以外的unicode值进行编码时输出%u****格式。

2)encodeuri不编码的字符有82个

!、#、$、&、'、(、)、*、+、,、-、.、/、:、;、=、?、@、_、~、0~9、a~z、a~z

3)encodeuricomponent不编码的字符有71个

!、'、(、)、*、-、.、_、~、0~9、a~z、a~z

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网