GET&POST请求和响应的中文乱码解决方案
Serlvet程序的请求和响应乱码问题
get请求与post请求数据乱码
public class RequestAPIServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取请求参数 String username = req.getParameter("username"); //解决get请求的中文乱码 //1 先以 iso8859-1 进行编码 //2 再以 utf-8 进行解码 //username = new String(username.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); System.out.println(username); var pwd = req.getParameter("pwd"); System.out.println(pwd); System.out.println("请求方式:" + req.getMethod()); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置请求体的字符集为UTF-8,解决POST请求中文乱码 //字符集设置要在获取请求参数前 req.setCharacterEncoding("UTF-8"); var username = req.getParameter("username"); /*byte[] bytes = username.getBytes("ISO-8857-1"); var data = new String(bytes, StandardCharsets.UTF_8); System.out.println(data);*/ System.out.println(username); var pwd = req.getParameter("pwd"); System.out.println(pwd); System.out.println("请求方式:" + req.getMethod()); } }
服务器响应客户端数据乱码问题
public class MyHttpServletResponse extends HttpServlet { //获取字符流响应数据 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //解决响应数据中文乱码 //设置浏览器与服务器都使用utf-8字符集,并设置了响应头 //此方法要在获取流对象之前使用 resp.setContentType("text/html;charset=UTF-8"); //获取字符流对象 var writer = resp.getWriter(); //服务端向客户端响应数据 writer.write("Hello,Browser,我是服务端!"); } }
说明:解决中文乱码必须放到获取流之前
推荐使用
// 它会同时设置服务器和客户端都使用 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");
SpringMVC请求和响应的乱码问题
如果使用的是Tomcat服务器,可以在server.xml
配置字符集解决get请求的乱码
post请求乱码可以在web.xml
配置字符编码过滤器
<!--配置字符编码过滤器--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--设置请求参数字符集初始化--> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <!--设置请求与响应字符集编码初始化--> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
分类:
Java / Spring全家桶
, Java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性