一开始我遇到了网页跳转后出现中文变成问号?的问题。如下:
后面搜索各种解决方案:
1、设置idea的编码格式
2、修改Tomcat
Name:JAVA_TOOL_OPTIONS ; Value:-Dfile.encoding=UTF-8 ;
-Dfile.encoding=UTF-8
3、修改Tomcat文件(tomcat目录下conf/logging.properties文件)
4、在doget中添加相关代码,如:
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
//告诉服务器,编码格式为utf-8
resp.setCharacterEncoding("utf-8");
//告诉浏览器,编码格式也为utf-8
resp.setHeader("Content-type","text/html;charset=utf-8");
这几种的组合都试过了,最终都是失败
正当我百思不得其解的时候突然想到会不会是在运行时代码的先后顺序导致修改编码的滞后。
于是将4中的内容添加到了输出语句前面实现了中文显示:
这个如此小的问题居然花费了一个多小时,过于乌龙,希望大家不要和我犯同样的错误。
public class HelloServlet extends HttpServlet {
//由于get和post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
System.out.println("进入doGet方法");
PrintWriter writer = resp.getWriter();//响应流
writer.print("Hello,Servlet被输出");
// req.setCharacterEncoding("UTF-8");
// resp.setContentType("text/html;charset=utf-8");
//告诉服务器,编码格式为utf-8
// resp.setCharacterEncoding("utf-8");
// //告诉浏览器,编码格式也为utf-8
// resp.setHeader("Content-type","text/html;charset=utf-8");
// resp.setCharacterEncoding("UTF-8");
// resp.setHeader("content-type","text/html;charset=UTF-8");
// resp.setCharacterEncoding("GB2312");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// resp.setContentType("text/html;charset=UTF-8");
doGet(req, resp);
}
}