概述

  spring的拦截器是开发中最常用的,HandlerInterceptorAdapter中可以拦截请求,然后进行判断是否放行,也可以自己定义返回数据HttpServletResponse对象,然而我就是再设置返回数据的时候碰到了中文乱码的问题。

详细说明

1. 乱码情况
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 这里是token解析错误,可能是token过时导致,或者token错误StatusResponse statusResponse = new StatusResponse();statusResponse.setStatus(ResponseStatus.TOKEN_CHECK_ERROR);statusResponse.setMessage("您的钥匙token已经过期或不合格");statusResponse.setData(false);PrintWriter writer = response.getWriter();response.setStatus(ResponseStatus.OK);response.setCharacterEncoding("UTF-8");response.setContentType("application/json");writer.write(JSONObject.toJSONString(statusResponse));writer.close();return false;}

执行之后的返回样子为:

{data: false, message: "????token????????", status: 10001}

  明明已经设置了这个编码方式为 UTF-8 但是我从浏览器上看到的却是 content-type: application/json;charset=ISO-8859-1 ,于是进行了各种尝试,最后发现执行顺序更换一下就没有问题了,更换如下:

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 这里是token解析错误,可能是token过时导致,或者token错误StatusResponse statusResponse = new StatusResponse();statusResponse.setStatus(ResponseStatus.TOKEN_CHECK_ERROR);statusResponse.setMessage("您的钥匙token已经过期或不合格");statusResponse.setData(false);response.setStatus(ResponseStatus.OK);response.setCharacterEncoding("UTF-8");response.setContentType("application/json");PrintWriter writer = response.getWriter();writer.write(JSONObject.toJSONString(statusResponse));writer.close();return false;}

  如此这样便是执行正常了,我觉得因该是如果再设置编码凡是之前就获取到了PrintWriter对象,那么这个对象写出去的编码方式就已经固定了,所以后期response再进行设置编码方式已经没有用了,所以我们只要再获取PrintWriter对象之前就设置好response的编码方式,那么获取到的PrinterWriter的编码方式就UTF-8.

  正常的输出如下:

{"data":false,"message":"您的钥匙token已经过期或不合格","status":10001}

spring拦截器自定义HttpServletResponse返回数据中文乱码相关推荐

  1. python接口测试(requests),返回数据中文乱码

    使用python中requests进行接口测试,发现返回数据中文乱码. 可以使用 r.content.decode('utf-8')即可解决 r = requests.get(url, params= ...

  2. springmvc返回数据中文乱码

    今天用springmvc作为接口产生了中文乱码,因为返回的是string  就不能用以前的更改responseBody了  . 在spring-mvc.xml文件中: <mvc:annotati ...

  3. ajax后台返回数据中文乱码_ajax提交 返回中文乱码问题

    接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解 ...

  4. ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...

    一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...

  5. html输入表单jsp返回数据中文乱码,JSP/Servlet页面中文显示为乱码的解决方式

    经过网上搜索和自己的经验,JSP/Servlet页面的中文显示为乱码的问题可以细分为5类: 1. JSP页面显示乱码. 2. Servlet接收Form/Request传递的参数时显示为乱码 3. J ...

  6. ajax后台返回数据中文乱码_ajax返回的数据是乱码????

    乱码问题出现的情况很多 1:由于页面之间的编码格式不一致,导致出现乱码 2:传递过程中编码和解码出现问题 解决情况如下 1:统一页面的编码格式,可以都为UTF-8 2:HTML之间的传递出现乱码可以如 ...

  7. OpenResty ngx.say返回数据中文乱码解决方案

    在conf的location配置中设置 default_type text/html; charset gbk; 修改lua脚本编码格式为 gb2312 即可正常

  8. 【229期】Spring Boot 使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流...

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  9. Spring拦截器配置详解(如何定义一个拦截器)

    一.前言 Spring和SpringBoot的拦截器也是对请求进行的系列验证或处理,关于拦截器和过滤器的区别此文不做介绍,之前我看到过一篇相关系列的文章,讲述的还比较详细,给大家参考参考:拦截器与过滤 ...

最新文章

  1. SNMP协议5种报文
  2. Windows下VS2015 MPI编译64位Boost1.64
  3. Oulipo(kmp算法)
  4. java报告(一)编程打印一个三角形的乘法口诀表
  5. 某信道的波特率为1000Baud,若令其数据传输速率达到4kb/s,则一个信号码元所取的有效离散值个数为( )
  6. python分词和词频统计
  7. 初学python之路-day04
  8. java中怎么把生成文件到项目根目录_[SpringBoot2.X] 02- 项目结构介绍
  9. Java B2B2C多用户电子商务平台SpringCloud/Boot
  10. Linux驱动:VFIO概述(vfio/iommu/device passthrough)
  11. java 获取物理路径_JSP---jsp页面获取物理路径
  12. FFmpeg源代码简单分析:avcodec_close()
  13. 仿原生app,native特效
  14. ES(elasticsearch)备份还原脚本
  15. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(1)
  16. CronTrigger说明
  17. python破解zip,rar文件密码问题
  18. 陶渊明《移居》二首的赏析
  19. Pod2g全面回归越狱界 iOS 6越狱曙光来临
  20. 8Manage:采购谈判的6个成功策略

热门文章

  1. ZYNQ Z-TURN BOARD 学习笔记1-Ubuntu上的流水灯实验
  2. win10 lol 登陆服务器未响应,win10系统lol登录出现未响应的解决方法
  3. 韩乔生谈韩乔生语录!
  4. Mysql(软件安装、Mysql基本语法、Mysql数据操作、Mysql关键字、约束、多表查询、Mysql多表查询、数据备份、数据导入、视图)
  5. ArduCopter——ArduPilot——Harmonic Notch Filter(谐波陷波滤波器)
  6. 全景丨VR全景制作全流程系列教程,第一节什么是全景?
  7. Flash&Flex大全(文档整理)
  8. 相遇是一场不经意的偶然
  9. ctfshow 大牛杯web
  10. 腾讯健康系统服务器怎么填,腾讯健康系统实名认证入口及修改方法介绍