因为在程序中无法直接请求一个含有中文的url,所以,我们要对它编码,我们一般会编成gbk,utf-8,但是URL编码和gbk,utf-8编码的区别是,它不会把所有字符都编码,
它只对非字母数字的字符借助utf-8或gbk来编码。
编码时注意 不能把整个url路径传到UrlEncoder的decode方法中,因为它也会把反斜杠/和冒号:也编码,所以域名部分是不需要编码的,取出路径部分 /图片/华仔.jpg
然后用split方法分割再分别编码,算法如下
最后获取的就是
例如 "http://www.dbank.com/documents/%E5%8D%8E%E4%BB%94.jpg" 。这下可以new了
格式是百分号加16进制码的方式,这便构成了url格式的编码。
但是我们可以直接在浏览器中请求一个含有中文的url路径,这是为什么呢?我想这是因为,浏览器的内部程序作了判断,不管什么URL,它都给来了个URL编码,所以含有中文的就可以请求了
总结:如果想让URL 成功new出来,url地址必须要符合2个条件:
①不能包含中文
②符合ur地址的格式,即 http://xx.com/a/b
URL解码
经过测试 解码和编码的唯一不同是 解码时只对16进制数(中文编码)解码,而反斜杠/,英文,数字是不会有所改变的,所以解码时不需要以斜杠/ 为界限,plit()分割来解码
而是直接传入路径