首先要区分字符编码和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编码会和以页面的编码方式相同)
注意get和post的区别:
Get方式没有请求体(请求正文),请求参数值以查询字符串的形式追加在url之后,即url?key1=value&key2=value…(value的值可以自行指定同时也可以以提交表单方式生成URL编码)
Post方式存在请求体,请求参数的值以url编码存在请求体(请求正文)中