servlet 中文乱码

qq_35182829 2016-12-13 01:40:22
import java.io.*;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class Hello
*/
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Hello() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html charset=utf-8");
out.print("<html><body>");
out.print("你好,Hello World!!!");
out.print("</body></html>");
}
}

直接上代码了,用的是eclipse ,服务器tomcat7.0
输出图片:
eclipse中所有的编码都设置的时utf-8,chrome中设置的也是utf-8,最后显示的一个中文对应一个问号
...全文
239 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
逆光生命线 2016-12-14
  • 打赏
  • 举报
回复
引用 9 楼 joy_life_line 的回复:
response.setContentType("text/html charset=utf-8"); 你这句话格式可能错了,中间应该用分号不是空格response.setContentType("text/html;charset=utf-8");
而且要放到PrintWriter out = response.getWriter();这句话之前,response.setCharacterEncoding("UTF-8");这句话可以删掉,与上一句重复了,没必要
逆光生命线 2016-12-14
  • 打赏
  • 举报
回复
response.setContentType("text/html charset=utf-8"); 你这句话格式可能错了,中间应该用分号不是空格response.setContentType("text/html;charset=utf-8");
SSHorSSM 2016-12-14
  • 打赏
  • 举报
回复
引用 5 楼 qq_35182829 的回复:
@qq_36860250 是tomcat/conf/server.xml吗?还是eclipse工作空间里的某个位置?在tomcat/conf/server.xml里加了,还是没用。
工作空间里面的,去试试吧,不行的话,再把request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); 这两句加到PrintWriter out = response.getWriter()的前面
mykyle 2016-12-14
  • 打赏
  • 举报
回复
response.setHeader("Content-type", "text/html; charset=utf-8"); PrintWriter out = response.getWriter(); out.print("<html><body>"); out.print("你好,Hello World!!!"); out.print("</body></html>"); 把其它的去掉也可以加这个response.setHeader("Content-type", "text/html; charset=utf-8");上一个问题具体怎么回事我也不知道
qq_35182829 2016-12-13
  • 打赏
  • 举报
回复
@mykyle 为什么需要这样呢?课本上,老师上课的演示,他们都没有加这句话。只是在out对象之前或者之后写了 response.setContentType("text/html charset=utf-8"); 就没有出现中文乱码的情况,而我是因为出现了中文乱码的情况,所以在上一句的基础上额外添加了 response.setCharacterEncoding("UTF-8");这一句 这两句谁会覆盖谁??为什么要写在out对象之前?
qq_35182829 2016-12-13
  • 打赏
  • 举报
回复
@qq_36860250 是tomcat/conf/server.xml吗?还是eclipse工作空间里的某个位置?在tomcat/conf/server.xml里加了,还是没用。
mykyle 2016-12-13
  • 打赏
  • 举报
回复
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html charset=utf-8"); // TODO Auto-generated method stub PrintWriter out = response.getWriter(); out.print("<html><body>"); out.print("你好,Hello World!!!"); out.print("</body></html>"); } 把response.setCharacterEncoding("UTF-8");放在方法的第一行。估计是得放在PrintWriter out = response.getWriter();之前。你再试一下呢?
SSHorSSM 2016-12-13
  • 打赏
  • 举报
回复
页码格式改为UTF-8,工作空间的.me_tcat文件夹下的conf文件夹下的server.xml,然后打开,<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding= "utf-8" />,把红色的部分加上试试
老李家的小二 2016-12-13
  • 打赏
  • 举报
回复
out.print("<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>");
Defonds 2016-12-13
  • 打赏
  • 举报
回复
连接器、 request 接收的时候、 contentType 都尝试一下

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧