从 tomcat8 以后,采用 utf-8 编码,就不会出现中文乱码了,tomcat8 之前一直用 ISO-8859-1 编码,当然我们也可以修改它的配置文件 conf/server.xml,添加 URIEncoding="UTF-8"
可以解决 get 请求的中文乱码。
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("你好,世界!");
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于