Java Web中文乱码问题

 

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即可解决。

 

http://blog.csdn.net/darxin/article/details/5036100

http://blog.csdn.net/magister_feng/article/details/6616008

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值