处理Servlet响应中文乱码

首先,response返回有两种,一种是字节流outputstream,一种是字符流printwrite。

申明:这里为了方便起见,所有输出都统一用UTF-8编码。

先说字节流,要输出“中国",给输出流的必须是转换为utf-8的“中国”,还要告诉浏览器,用utf8来解析数据

[html] view plain copy

  1. //这句话的意思,是让浏览器用utf8来解析返回的数据
  2. response.setHeader("Content-type", "text/html;charset=UTF-8");
  3. String data = "中国";
  4. OutputStream ps = response.getOutputStream();
  5. //这句话的意思,使得放入流的数据是utf8格式
  6. ps.write(data.getBytes("UTF-8"));

再说字符流,要输出中国,需要设置response.setCharacterEncoding("UTF-8");

[html] view plain copy

  1. //这句话的意思,是让浏览器用utf8来解析返回的数据
  2. response.setHeader("Content-type", "text/html;charset=UTF-8");
  3. //这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
  4. response.setCharacterEncoding("UTF-8");
  5. String data = "中国";
  6. PrintWriter pw = response.getWriter();
  7. pw.write(data);

经验:

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

           2,如果返回的中文是“烇湫”这种乱码,说明浏览器的解析问题,应该检查下是否忘加response.setHeader("Content-type", "text/html;charset=UTF-8");这句话。

如果上面都解决不了,请看更详细的说明

http://blog.csdn.NET/kontrol/article/details/7767983

时间: 2024-12-26 04:17:39

处理Servlet响应中文乱码的相关文章

Servlet处理中文乱码问题(请求/响应)

乱码原因 传输方和接收方采用的编码不一致.传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码. Tomcat服务器默认采用的ISO8859-1编码得到参数值.虽然①中采用了同样的编码方式,但经过tomcat一处理,也会出现乱码(GET方式)  1.请求中文乱码的处理: --post request.setCharacterEncoding("UTF-8"); --get String name = new String(“中国”.getBytes(“iso-885

JSP和Servlet的中文乱码处理

JSP和Servlet的中文乱码处理 前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下.应该是可以解决日常的乱码问题了.现在作以下总结希望对需要的人有所帮助.我也是刚学,所以有不足之处希望谅解. 一.表单提交时出现乱码: 在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式.所以请求的时候便有get请求和post请求.以前我一直以为get请求和post请求方式出现的乱码的解决方式是一

JavaWeb之response响应中文乱码问题

response向页面响应中文乱码问题  字节流 * 有可能乱码,与中文转换成字节数组.浏览器打开的默认字符编码有关 * 解决方式:将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致 response.setHeader("Content-Type", "text/html;charset=utf-8"); response.getOutputStream().write("张三".getBytes("utf-8"

servlet中中文乱码问题

在web项目中经常回碰到中文乱码的问题,特此整理一下,有不足的地方,希望大家纠正. 1从前台往后台传数据,.以get方式发送请求,发送的参数不乱,但是后台接收到参数乱码 在Tomcat的server.xml文件中设置URIEncoding属性值为UTF-8%CATALINA_HOME%\conf\server.xml <Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000

Spring MVC @ResponseBody响应中文乱码

问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter>>> spring mvc的一个bug,spring MVC有一系列HttpMessageConverter去处理用@ResponseBody注解的返回值,如返回list则使用MappingJacksonHttpMessageConverter,返回string,则使用StringHttp

处理servlet中中文乱码问题

平时coding时,经常遇到一些乱码问题,现在总结一下在使用Servlet时遇到的一些乱码问题,简单的解决办法两种 第一种简单处理方式 在servlet中数据的处理是通过request和response进行处理的,提交数据有两种方式:post+get ①post提交方式--只要事先设置request.setCharacterEncoding("UTF-8");-------注:只对POS提交有效 ②get提交方式--通过ISO8859-1得到客户端发送的数据,再转成UTF-8类型.(或

Java Web -- Servlet(10) 中文乱码处理专题

一.产生乱码的原因: 当浏览器通过http协议访问web服务器时,假设此时浏览器的编码是utf-8,当把请求发给web服务器时,web服务器却以ISO-8859-1编码接收,所以就产生了乱码. //设置web服务器接收时,以utf-8形式接收,如下: request.setCharacterEncoding("utf-8"); //编码方式设置和浏览器一样(还有常见的gbk.gb2312) //设置浏览器显示时,以utf-8显示. response.setContentType(&qu

Servlet(六)中文乱码问题

出现中文乱码的原因: 浏览器(请求) 与 服务器(默认编码是iso-8859-1,服务器处理和响应返回)  之间的编码格式不一致 (1)post request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); (2)get String username=new String(request.getParameter("username&q

Servlet 知识点 中文乱码的本质与解决

本质原因:在servlet中出现中文乱码的原因编码和解码采用的不是一个编码表或者两个编码表不是兼容 例如UTF-8编码.GBK编码都可以读取中文,那么如果采用UTF-8编码保存文件,但是采用GBK编码读取文件就会造成乱码,因此UTF-8编码保存的文件应该使用UTF-8编码读取: 除了上述的utf-8,gbk之外字符编码表,还有ANSI 编码.GB2312编码等常用的编码表. 乱问题的解决: 原文地址:https://www.cnblogs.com/cplinux/p/9738050.html