Json传输出现中文乱码问题的解决办法
作者:大羊腿188 发布时间:2022-06-23 06:38:04
标签:json,中文,乱码
针对最近练习项目时出现的乱码问题 -- tomcat编码出现的问题
问题出现原因:
web.xml中已经加了中文过滤器和json数据转换器,但依旧出现乱码,这是因为tomcat默认的编码格式是 iso-8859-1,所以会出现乱码.
解决方式1: 将编码方式直接改为UTF-8
/**
* 分页条件查询
*/
public void selectByPagesAndCondition(HttpServletRequest req,HttpServletResponse resp) throws IOException{
//获取数据当前页码与展示条数 url?currentPage=1&pageSize=5
int currentPage = Integer.parseInt(req.getParameter("currentPage"));
int pageSize = Integer.parseInt(req.getParameter("pageSize"));
//接收brand数据
BufferedReader reader = req.getReader();
String s = reader.readLine();
s = new String(s.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(s);
Brand brand = JSONObject.parseObject(s, Brand.class);
PageBean<Brand> pageBean = brandService.selectByPagesAndCondition(currentPage, pageSize,brand);
String StrJSON = JSON.toJSONString(pageBean);
//返回数据的JSON格式
resp.setContentType("text/json;charset=utf-8");
resp.getWriter().write(StrJSON);
}
解决方式2:因是maven加的tomcat插件原因,修改其编码格式
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port>
<path>/</path>
<uriEncoding>utf-8</uriEncoding> <!--指定编码格式 -->
</configuration>
</plugin>
</plugins>
</build>
在没有用springmvc时,可添加该句解决post请求的乱码问题:
request.setCharacterEncoding("UTF-8");
一般的响应乱码
a:设置response的字符流的编码方式为UTF-8;如:
response.setCharacterEncoding(“UTF-8”);b:设置浏览器解码是用UTF-8的码表来解码;如:
response.setHeader(“content-type”, “text/html;charset=UTF-8”);
可两者配合使用
以注解形式解决json串数据格式响应乱码问题
@RequestMapping(produces = {"text/html;charset=utf-8"})
若原来方法只写了匹配路径,默认可不写value属性 如: @requestMapping(“/login.do”)等
多属性时要添加属性名,改为
@requestMapping(value="/login.do",produces = {"text/html;charset=utf-8"})
缺点: 每个方法都要添加这个produces属性,所以直接在springmvc.xml添加2个转换器更为方便.
来源:https://blog.csdn.net/weixin_61620939/article/details/128660983


猜你喜欢
- Java 数据库连接池详解数据库连接池的原理是:连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库
- static和@Component遇到的bug今天在编写util的时候,发现不能调用到工具类里面的方法,转眼一看,原来不是工具类里面的方法是
- 在处理网络请求时,有一部分功能是需要抽出来统一处理的,与业务隔开。登录校验可以利用spring mvc的 * Interceptor,实现H
- 前言日志模块是每个项目中必须的,用来记录程序运行中的相关信息。一般在开发环境下使用DEBUG级别的日志输出,为了方便查看问题,而在线上一般都
- package test001;import java.awt.event.ActionEvent;import java.awt.even
- SqlMapConfig.xml的约束,也就是Mybatis主配置文件的约束<?xml version="1.0"
- 场景点击拨打电话按钮,跳转到拨打电话页面点击发送短信按钮,跳转到发送短信页面注:实现将布局改为LinearLayout,并通过android
- 1.场景介绍:开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级
- 1.什么是thread当我们提及多线程的时候会想到thread和threadpool,这都是异步操作,threadpool其实就是threa
- 1.Spring Gateway概述1.1 什么是Spring Cloud GatewaySpring Cloud Gateway是Spri
- 本文实例为大家分享了C#字数统计(字母、数字、汉字、符号)的具体代码,供大家参考,具体内容如下namespace 测试1{ public p
- zuul添加或修改请求参数一、为什么要用到这个在基于 springcloud 构建的微服务系统中,通常使用网关zuul来进行一些用户验证等过
- LinkedList简介LinkedList是一个使用双向链表结构实现的容器,与ArrayList一样,它能动态扩充其长度,LinkedLi
- 本文实例讲述了C#获取机器码的方法。分享给大家供大家参考,具体如下:using System.Runtime.InteropServices
- 本文实例讲述了Java Swing中JTable渲染器与编辑器用法。分享给大家供大家参考,具体如下:JTable的内容、外观、事件响应在很大
- properties配置文件如下:human.name=Mr.Yuhuman.age=21human.gender=male如何把prope
- 目录通过Resource接口手动加载通过@Value自动转换通过ResourceLoader加载使用ResourceUtils加载资源读取资
- 先来看两段代码: Thread t = new Thread(() => { AddIt AddDelegate = new
- 由于项目上的需要侧滑条目展示收藏按钮,记得之前代码家有写过一个厉害的开源控件 AndroidSwipeLayout 本来准备直接拿来使用,但
- spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现