JSP中的request和response的乱码解决

request和response的乱码解决

设置
1.
作响应的JSP页面或者servlet设置
response.setCharacterEncoding(“UTF-8”);
作提交的JSP页面设置
request.setCharacterEncoding(“UTF-8”);
2.
作响应的JSP页面或者servlet设置
response.setHeader(“Content-type”, “text/html;charset=UTF-8”);

request乱码指:客户端浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码;

response乱码指:服务器向客户端浏览器发送的数据包含中文字符,但是浏览器中显示的是乱码;

乱码产生的原因:客户端(浏览器)跟服务器端采用的编码格式不一致造成的。
解决:
一、response乱码
对于response乱码,只需在服务器端指定一个编码字符集,然后通知浏览器按照这个字符集进行解码即可。有三种方式:
1、A、设置服务器端的编码
   response.setCharacterEncoding("utf-8”);
   默认是ISO-8859-1;该方法必须在response.getWriter()之前进行设置
   B、通知浏览器服务器发送的数据格式
response.setHeader(“Content-type”, "text/html; charset=utf-8”);
2、A、通知浏览器服务器发送的数据格式
   response.setContentType("text/html;charset=utf-8”);
   等同于response.setHeader(“contentType”, "text/html; charset=utf-8”);它其实会覆盖response.setCharacterEncoding("utf-8”) ,在开发中只需要设
   B、设置服务器端的编码
   response.setContentType("text/html;charset=utf-8”);
3、A、设置服务器端的编码
   response.setCharacterEncoding("utf-8”);
   B、浏览器使用utf-8进行解码

总结:设置:
A、设置服务器端的编码
response.setCharacterEncoding("utf-8”);
B、通知浏览器服务器发送的数据格式
response.setContentType("text/html;charset=utf-8”);
C、浏览器使用utf-8进行解码

二、request乱码
从浏览器发起的访问方式有三种:在地址栏直接输入URL访问、点击页面中的超链接访问、提交表单访问。第一种访问方式浏览器默认将参数按照utf-8进行编码,后面两种访问方式浏览器将参数按照当前页面的显示编码进行编码。所以对于request乱码,只需要在服务器端设置相应的解码格式即可。由于访问方式不同,浏览器对参数的编码格式也不同,为了方便处理,通过超链接和表单的访问也规定必须是utf-8格式,即显示当前页面的编码也要使用utf-8,这样浏览器将统一使用utf-8对参数进行编码。
A、post方式
post方式属于表单提交,参数存在于请求体中。
request.setCharacterEncoding("utf-8”)
B、get方式
get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码,这时候解决乱码有两种办法:
修改服务器端对uri参数的默认编码
在tomcat的server.xml中,设置元素的属性URIEncoding="UTF-8”即可。(默认没有设置此属性)
例如:注意:1、设置元素的属性useBodyEncodingForURI=“true”,意思是请求体和uri使用相同的编码格式。通过设置这两个属性,既可以解决get方式的乱码,又可以解决 post方式的乱码。2、通过修改server.xml指定服务器对get和post统一按照utf-8解码,要求tomcat管理下的所有web应用都要使用utf-8编码,即所有的jsp、html页面都使用utf-8编码。

最后:1,如果中文返回出现??字符,这表明没有加response.setCharacterEncoding(“UTF-8”);这句话。

        2,如果返回的中文是“烇湫”这种乱码,说明浏览器的解析问题,应该检查下是否忘加response.setHeader("Content-type", "text/html;charset=UTF-8");这句话。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值