浏览器进制及编码常识

一、HTML与JavaScript自解码机制

    JavaScript代码出现在HTML标签内,意味着这段JavaScript可以进行HTML形式的编码,这种编码有以下两种:

  • 进制编码:&#xH;(十六进制格式)、&#D;(十进制格式),最后分号可以不要。
  • HTML实体编码。

在JavaScript执行之前,HTML形式的编码会自动解码。

如下:



等同于:



等同于:

如果用户输入出现在

二、浏览器进制常识

在浏览器常用的进制混淆有八进制,十进制和十六进制。

HTML属性最常用的属性为十进制和十六进制。十进制在HTML中使用8来表示,用&和#作为前缀,中间为十进制数字,以(;)结尾,也可以没有。如果十六进制则用Z表示,比十进制多了x,进制码也多了a~f字符来表示。x,a-f这几个字符对大小写不敏感。

CSS中也只能用到十进制和十六进制,CSS兼容HTML中的进制表示形式,十六进制还可以使用\6c形式表示,用斜线作为进制数值表示。

JavaScript中eval执行的字符串有八进制和十六进制分别用\56与\x5c表示。但是不能直接给诸如汉字的多字节编码,只能使用Unicode编码。

JavaScript自身带有两个函数可以进行进制编码与解码:char.toString(jinzhi)、String.fromCharCode(code, jinzhi)。

 

三、浏览器编码常识

在JavaScript中有三套编码解码函数,分别为:

escape/unescape

encodeURI/decodeURI

encodeURIComponent/decodeURIComponent

escape不编码的字符有69个:
*、+、-、.、/、@、_、0~9、a~z、A~Z
而且escape对0~255以外的unicode值进行编码时输出 %u**** 格式。

encodeURI不编码的字符有82个:
!、#、$、&、'、(、)、*、+、,、-、.、/、:、;、=、?、@、_、~、0~9、a~z、A~Z

encodeURIComponent不编码的字符有71个:
!、'、(、)、*、-、.、_、~、0~9、a~z、A~Z

除了JavaScript提供的这三种加密解密方法,我们还需要了解HTMLEncode、URLEncode、JSEncode、UTF-7编码、Base64编码

编码解码在线工具:http://www.ofmonkey.com/encode/unicode

 

 

你可能感兴趣的:(浏览器,前端,编码解码,前端)