关于servlet中乱码的疑惑

如何设置编码方式从而在浏览器端正确显示中文

下面是测试的servlet小程序


public class TestDemo extends HttpServlet

{

    ServletConfig config;

    public void init(ServletConfig config)throws ServletException{

        this.config = config;

        System.out.println("你好");//此处在tomcat中显示的也是乱码

    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

              throws ServletException,IOException{ 

        resp.setCharacterEncoding("UTF-8");//此处setCharacterEncoding的意思是否就是将resp响应的内容以utf-8的编码方式传输

        resp.setContentType("text/html;charset=UTF-8");//此处setContentType的意思是否是在浏览器端以utf-8的方式显示

        PrintWriter out = resp.getWriter();

        String data = "你好";

        out.print(data);

    }

}

服务器用的是tomcat,正确设置了web.xml。(不知道这和tomcat有没有关系)

以上设置之后浏览器显示的是乱码,请问错在哪里了呢?


慕无忌1623718
浏览 475回答 7
7回答

拉风的咖菲猫

tomcat的中文编码的问题。更改一下tomcat的配置文件就可以了。一般web开发涉及到中文都会修改这一步。进入tomcat的安装目录,有一个conf文件夹,就是存放一些配置文件。找到里面的Server.xml文件。找到<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"/>在后面添加utf8编码变成这样<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"  URIEncoding="UTF-8"/>就可以的。记得在eclipse里delete之前的tomcat,重新配置一下tomcat就可以了!

守着一只汪

Tomcat的原因,我之前遇到这个问题,搜了一下说是tomcat编码的问题,需要更改tomcat的一个配置文件,我没改。把传递方式从post改成get就好了,或者加下面也可以解决这个问题&nbsp; &nbsp; &nbsp; &nbsp; request.setCharacterEncoding("utf-8");&nbsp; &nbsp; &nbsp; &nbsp; response.setCharacterEncoding("utf-8");

繁星coding

你的servlet文件编码以及页面文件编码是不是utf-8

摇曳的蔷薇

乱码问题,依次检查以下几个容器(tomcat)、页面、数据库、过滤器、编码编译所以你检查下tomcat、编码编译

Smart猫小萌

get中的中的中文需要手动装码解码

largeQ

补充一下上面的回答:除了servlet输出设置编码、tomcat设置编码以外,还要注意jsp的编码,jsp的<head></head>标签中要有这么一个声明:<meta charset="UTF-8">;最后还要看下你的浏览器编码,以谷歌浏览器为例,点击右上角的按钮---更多工具---编码---UTF-8 要选中
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java