关于java web中字符编码和url编码的理解

来源:互联网 发布:达观数据高翔 编辑:程序博客网 时间:2024/05/19 12:15

首先要区分字符编码和url编码的区别,page指令中指定的字符编码是存储页面的时使用的编码,url编码是传输请求参数时候使用的编码。

字符编码:

web页面本身的page指令中”Content-Type:text/html;charset=GBK”指定的是生成页面(即响应页面也就是本页面)的字符编码。

url编码:

但通过get或者post请求时,请求参数值中一旦存在汉字时浏览器需要对请求参数进行编码,即URL编码(在传输过程中肯定是以字节流的方式传输,将字符转换为字节,因为计算机只认识二进制字节)。

这个url编码方式则取决于浏览器自己(但其中也存在着规律)

 

ie举例:(不同浏览器的编码方式不同,ex: firefox

Get请求方式中的请求参数值:如果在url中直接指定请求参数的值,通过f12查看时候会发现查询字符串默认以UTF-8对请求参数值进行编码;而如果是提交表单的方式,则默认以表单page指令中指定的字符编码进行编码

Post请求方式中的请求参数值:(基本以提交表单的方式进行请求,一般在表单页面的page指令中”Content-Type: text/html;charset=GBK”会指定页面的编码,所以请求参数值的url编码会和以页面的编码方式相同)

 

   注意getpost的区别:

Get方式没有请求体(请求正文),请求参数值以查询字符串的形式追加在url之后,即url?key1=value&key2=value…value的值可以自行指定同时也可以以提交表单方式生成URL编码)

Post方式存在请求体,请求参数的值以url编码存在请求体(请求正文)中

 

0 0