以下各种编码方式,不会编码的特殊字符:
encodeURI:
某些ASCII标点符号:- _ . ! ~ * ' ( )
URI中有特殊含义的ASCII标点符号:;/?:@&=+$,#
encodeURIComponent
某些ASCII标点符号:- _ . ! ~ * ' ( )
base64
+/=
遇到的问题
- java的URLEncode与js的encodeURIComponent对“空格”的编码不一样,java的会编码成“+”,而js的会编码成“%20”
- ajax传输过程中会自动对 单引号和双引号 进行编码,导致服务端接收的数据和前端发送的不一样。更诡异的是,在springmvc环境下。前端传参到后台不会有问题,但是收到后台的响应式又会被编码。为了解决所有乱码问题,最好先进性base64编码,然后在进行urlEncode编码。
- tomcat会自动对url进行decode,decode的编码默认为iso-8859-1。如果手动再次decode可能会出现问题。