UTF-8编码:小文 ---> %E5%B0%8F%E6%96%87
UTF-8解码:%E5%B0%8F%E6%96%87 ---> 小文
浏览器和服务器的接收和发送数据的编码
1 、浏览器时如何对接收和发送数据的编码
1)浏览器在发送数据时候分3种:一是浏览器直接用URL提交的数据,另外两种是用表单的GET和POST方式提交的数据。
URL:如果是javascript产生的URL和超链接则转换为get提交,其它的则以浏览器的编码为准。
GET和POST根据页面编码来发送数据。
2)response.setCharacterEncoding("UTF-8")的作用是指定对服务器的响应进行重新编码 (默认是IS08859-1)。【转者注:删除,如果没有设定,则按照contentType——pageEncoding进行编码,不使用默认的ISO-8859-1,应该是对的^_^】
同时,浏览器也是根据这个参数来对其接收的数据进行重新编码(解码),
浏览器解码顺序response.setCharacterEncoding——contentType——pageEncoding。
2 、服务器是如何接收和发送数据的编码
1)对于发送数据,服务器采用response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码。
浏览器根据这个编码进行解析,显示给浏览器。
2)对于接收数据:
request.setCharacterEncoding("UTF-8");设置web服务器对浏览器发送的请求数据的编码(默认是以IS08859-1编码格式去接受数据); 不能解决get方法的中文乱码问题
对于get请求,应该在服务器接收端:String n = new String(name.getBytes("ISO-8859-1"),"utf-8"); req.setAttribute("name", n);
或者
<Connector connectionTimeout="40000" port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8" redirectPort="8443"/>
对于post请求,使用org.springframework.web.filter.CharacterEncodingFilter即可解决。