js编码和base64

发布时间 2023-04-20 09:33:10作者: 挖洞404

js内部支持三组编码和解码函数,都是全局函数,可以直接使用。

内部没有html编码和解码,一般是自行编写函数。也没有md5等加密解密函数,需要引入响应的工具js。另外支持base64的编码和解码,window.btoa()和window.atob函数完成。

1、escape函数

escape('ab123*@-_+./时间\'\"%()')
//ab123*@-_+./%u65F6%u95F4%27%22%25%28%29
  • 可对字符串进行编码,该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ – _ + . / 。其他所有的字符都会被转义序列替换。
  • 对ascii字符编码相当于url编码形式,即%+ascii编号。对非ascii字符以%u为前缀,+unicode编号。

2、unescape函数

unescape(escape('ab123*@-_+./时间\'\"%()'))
//ab123*@-_+./时间'"%()
  • 可对通过 escape() 编码的字符串进行解码。
  • 注意:unescape() 函数已经从 Web 标准中删除,所以尽量不使用该函数,可以使用 decodeURI 或 decodeURIComponent 代替。

3、encodeURI函数

encodeURI('abc123,/?:@&=+$#时间\'\"%()')
//abc123,/?:@&=+$#%E6%97%B6%E9%97%B4'%22%25()
  • 可把字符串作为 URI 进行编码。
  • 对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的: ,/ ? : @ & = + $ #
  • 对ascii字符编码相当于url编码形式,即%+ascii编号。对非ascii字符是先utf-8编码,然后在每个字节前加%前缀

4、decodeURI函数

decodeURI(encodeURI('abc123,/?:@&=+$#时间\'\"%()'))
//abc123,/?:@&=+$#时间'"%()
  • 可对通过 encodeURI() 编码的字符串进行解码。

5、encodeURIComponent函数

encodeURIComponent('abc123-_.!~*\'()时间\"%:;/?@&=+$,#')
//abc123-_.!~*'()%E6%97%B6%E9%97%B4%22%25%3A%3B%2F%3F%40%26%3D%2B%24%2C%23
  • 可把字符串作为 URI 组件进行编码。
  • 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: – _ . ! ~ * ‘ ( ) 。
  • 对ascii字符编码相当于url编码形式,即%+ascii编号。对非ascii字符是先utf-8编码,然后在每个字节前加%前缀

6、decodeURIComponent函数

decodeURIComponent(encodeURIComponent('abc123-_.!~*\'()时间\"%:;/?@&=+$,#'))
//abc123-_.!~*'()时间"%:;/?@&=+$,#
  • 可对通过 encodeURI() 编码的字符串进行解码。

7、window.btoa函数

btoa('ab')
//YWI=
btoa('时间')
//
  • 用于创建一个 base-64 编码的字符串。
  • 该方法使用 “A-Z”, “a-z”, “0-9”, “+”, “/” 和 “=” 字符来编码字符串。
  • 注意,其并不能直接对非ascii字符编码,一般需要先将非ascii字符转为url编码,任一编码函数均可,解码时使用对应的解码函数即可

8、window.atob函数

atob(btoa('ab'))
//ab
  • 对btoa函数编码后的文本进行解码
btoa(encodeURIComponent('ab时间'))
//YWIlRTYlOTclQjYlRTklOTclQjQ=
decodeURIComponent(atob('YWIlRTYlOTclQjYlRTklOTclQjQ='))
//ab时间