关于中文乱码的问题

关于中文乱码的问题

# 具体遇到的问题
如果在校验管理员的过滤器中,把输出信息设置成中文,则返回给前台的数据乱码。
# 报错信息的截图
http://img1.sycdn.imooc.com//climg/5f9b9c8a09a77aa109730262.jpg

# 尝试过的解决思路和结果
所以 ,想到了在输出响应前,增加:

response.setContentType("text/html;charset=utf-8");
这样过滤器中的响应输出不会中文乱码了,但是之前的接口,如用户登录,显示签名的地方乱码了

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpSession session = request.getSession();
User user = (User) session.getAttribute(Constant.currentUser);
if(user==null){
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setContentType("text/html;charset=utf-8");
PrintWriter out = new HttpServletResponseWrapper(response).getWriter();
/* response.setContentType("text/html;charset=utf-8");
   response.getWriter().println("\"status\": 10006,\n" +
           "    \"msg\": \"请在登录后操作o\",\n" +
           "    \"data\": null");*/
   out.write("{\n"
           + "    \"status\": 10006,\n"
           + "    \"msg\": \"请在登录后操作\",\n"
           + "    \"data\": null\n"
           + "}");
out.flush();
out.close();
return;
}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可尝试在application.properties中设置如下参数

spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8


好帮手慕小脸 2020-10-30 16:23:53

同学你好,可以尝试添加如下内容试试:

request.setCharacterEncoding("UTF-8"); //是对请求的设置字符集编码。

response.setCharacterEncoding("UTF-8"); //是设置响应的字符集编码。


  • 老师,能不能介绍下通过配置类或者像spring mvc中那样通过配置xml的方式统一解决中文乱码问题,而不是等到要输出时再去设置字符集编码
    2020-10-30 23:24:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师