URL编码(URL encoding)的作用是将字符转化为可在因特网上安全传输的格式。
在因特网上传送URL,只能采用ASCII字符集。
但由于URL常常包含ASCII字符集以外的字符,所以我们必须对URL进行转换。URL编码要做的,就是将URL转换为有效的ASCII字符格式。
在进行URL编码时,每一个非安全的ASCII字符都被替换为“%hh”格式,其中hh为两位十六进制数,它对应于该字符在ISO-8859-1字符集里的编码值。
每个“%hh”占一个字节。
URL字符串里不能含有空格,在进行URL编码时,空格全部被替换为加号(+)。
form表单在提交action的时候(无论是get或post),在底层会自动进行URL编码。
为了确保无乱码,我们必须保证前后使用的编码字符集保持一致。在jsp中,URL编码的字符集由指令contentType属性决定。
我们假设contentType="GB2312",当action提交,进入servlet控制器时,request.setCharacterEncoding和response.setCharacterEncoding的默认编码"GB2312"。
如果在容器中或过滤器中有设置编码为"UTF-8",那么,在servlet控制器中,应该先request.setCharacterEncoding("UTF-8"),否则会产生乱码。
这里我在iteye写的一篇文章,有测试过程,大家可以参考:
http://eyecom.iteye.com/blog/1502557