关于servlet中乱码的疑惑

发布于 2022-09-03 13:05:21 字数 820 浏览 27 评论 0

如何设置编码方式从而在浏览器端正确显示中文
下面是测试的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有没有关系)
以上设置之后浏览器显示的是乱码,请问错在哪里了呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

ぃ双果 2022-09-10 13:05:23

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

所以你检查下tomcat、编码编译

南街九尾狐 2022-09-10 13:05:23

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

嘿咻 2022-09-10 13:05:23

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

茶底世界 2022-09-10 13:05:22

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就可以了!

老子叫无熙 2022-09-10 13:05:22

一,:就在tomcat服务器的文件所在目录中找conf---->再去找server.xml文件,文件中有代码:
<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"  URIEncoding="UTF-8"/>
可能你之前会把8080端口改过,也有些人不改,看着自己的配置环境搞吧,在最后面添加URIEncoding="UTF-8",上面的代码是已经加上的了

二,在Service方法中使用

req.setCharacterEncoding("utf-8");

req就是请求对象,就像你的方法中第一个参数

上面的方法随便用,或者两个都用,

看你直接覆写了父类的doGet方法,就是get方式提交数据

那就用第一种吧,如果是post方式,就用第二种

吃素的狼 2022-09-10 13:05:22

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

        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文