几个编码方法,比较,各自的适用场合以及各自都编码哪些内容,编码后长什么样子了

  • 第一个问题,为什么要编码?

含有敏感词?太大了?不适合传输?有歧义?编码后就会变得不一样了,就能在需要区分时区分开了

  • 编码有哪些方法?

js:encodeURI,encodeURIComponent escape

java : java中没有encodeURIComponent 方法

java.net.URLEncoder
java.net.URLDecoder

new String(s.getBytes("iso885901"),"utf-8")

  • 编码后长什么样子呢?

转义后的字符, %十六进制值、

  • 哪些需要转义处理呢?

对于不同的方法,哪些需要转义哪些不需要转义是不同的

escape(string) 它是针对字符串处理的,跟url无关的就选他

encodeURI:转义内容有:4其他的

encodeURIComponent :转义内容有 :除非转义字符外的所有,所以它的编码范围更大

  • 先了解下都有哪几种字符类型,便于理解转义

1 保留字符 有10个: ; / ? @ & =+ $ ,

2 非转义字符 :26个英文*2 (大小写),10个数字 ,uri标记符8个 -_.!~*'()

3 # 自成一类,不是1也不是2

4 其他的,例如特殊字符,中文等

  • 这3个方法的使用场景是怎样的?

 源字符串:http://www.hutool.cn/aaa/bbb?pa=种花&lo=you

escape(string) 针对字符串 ,非url,当让如果url本身当成字符串也是ok的:

                            http%3a//www.baidu.com%3fpa%3d%u79cd%u82b1%26lo%3dyou

encodeURI: 只编码4这一类

                            http://www.hutool.cn/aaa/bbb?pa=种花&lo=you

encodeURIComponent :转义后都看不出它是url了,当把它作为url的一部分时它的作用就显现出来了

                            http%3a//www.baidu.com%3fpa%3d%u79cd%u82b1%26lo%3dyou
 

 

你可能感兴趣的:(java)