1、添加响应类型即可
//这句话的意思,是让浏览器用utf8来解析返回的数据
response.setHeader("Content-type", "text/html;charset=UTF-8");
添加前后:
如果是header参数乱码,解决方法如下:
HTTP Header 的编解码
当客户端发起一个 HTTP 请求除了上面的 URL 外还可能会在 Header 中传递其它参数如 Cookie、redirectPath 等,这些用户设置的值很可能也会存在编码问题,Tomcat 对它们又是怎么解码的呢?
对 Header 中的项进行解码也是在调用 request.getHeader 是进行的,如果请求的 Header 项没有解码则调用 MessageBytes 的 toString 方法,这个方法将从 byte 到 char 的转化使用的默认编码也是 ISO-8859-1,而我们也不能设置 Header 的其它解码格式,所以如果你设置 Header 中有非 ASCII 字符解码肯定会有乱码。
我们在添加 Header 时也是同样的道理,不要在 Header 中传递非 ASCII 字符,如果一定要传递的话,我们可以先将这些字符用 org.apache.catalina.util.URLEncoder 编码然后再添加到 Header 中,这样在浏览器到服务器的传递过程中就不会丢失信息了,如果我们要访问这些项时再按照相应的字符集解码就好了。
附:URLEncoder 、URLDecoder 转码解码使用
传递参数,转码传递
String encodeStr = null; try {encodeStr = URLEncoder.encode("aabb22中国", "utf-8"); } catch (UnsupportedEncodingException e) {e.printStackTrace(); } System.out.println("lgq处理后:" + encodeStr);client.addHeader("headkey", encodeStr);//添加header请求参数方法
接收参数,解码显示
String name=(String) request.getHeader("headkey");
String decodeStr = URLDecoder.decode(name, "utf-8");
System.out.println("hhhhhhhhhhhhhhhhh=====发 的==="+decodeStr);//获取header请求参数
结果:
hhhhhhhhhhhhhhhhh=====发 的===aabb22中国