Web 开发:解决请求和响应的中文乱码

本贴最后更新于 2509 天前,其中的信息可能已经斗转星移

从 tomcat8 以后,采用 utf-8 编码,就不会出现中文乱码了,tomcat8 之前一直用 ISO-8859-1 编码,当然我们也可以修改它的配置文件 conf/server.xml,添加 URIEncoding="UTF-8" 可以解决 get 请求的中文乱码。

aced403079474a28867da0095cdf2295-image.png

1. 请求

浏览器上输入中文,传参到后台服务器,出现的乱码问题。

1.1 get 请求提交数据到后台出现的中文乱码

// 参数列表拼接到地址栏的后面,中文进行 utf-8 编码后存到 request 对象中

// request 对象的默认编码是 iso-8859-1,不支持中文

// 解决办法:先使用 iso-8859-1 获取编码后的中文,再使用 utf-8 进行解码

String username = request.getParameter("username");

username = new String(username.getBytes("iso-8859-1"), "utf-8");

System.out.print(username);

1.2 post 请求提交数据到后台出现的中文乱码

// 设置缓冲区的编码为 utf-8

request.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

System.out.print(username);

2. 响应

服务器输出数据到浏览器,浏览器上显示中文乱码的解决方案。

2.1 字节流输出中文可能会出现乱码

// 设置浏览器以 utf-8 的编码打开

response.setHeader("content-type", "text/html; charset=utf-8");

response.getOutputStream().write("你好,世界!".getBytes("utf-8"));

2.2 字符流输出中文一定会出现乱码

A:第一种解决办法:设置缓冲区的编码为 utf-8,并且设置浏览器的编码为 utf-8

response.setHeader("content-type", "text/html; charset=utf-8");

response.setCharacterEncoding("utf-8");

response.getWriter().print("你好,世界!");

B:第二种解决办法:

response.setContentType("text/html; charset=utf-8");

response.getWriter().print("你好,世界!");

  • Web
    117 引用 • 433 回帖 • 8 关注
  • 经验
    25 引用 • 159 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...