软件编程
位置:首页>> 软件编程>> java编程>> Json传输出现中文乱码问题的解决办法

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(&ldquo;UTF-8&rdquo;);

b:设置浏览器解码是用UTF-8的码表来解码;如:
response.setHeader(&ldquo;content-type&rdquo;, &ldquo;text/html;charset=UTF-8&rdquo;);
可两者配合使用

以注解形式解决json串数据格式响应乱码问题

@RequestMapping(produces = {"text/html;charset=utf-8"})

 若原来方法只写了匹配路径,默认可不写value属性 如: @requestMapping(&ldquo;/login.do&rdquo;)等

多属性时要添加属性名,改为

@requestMapping(value="/login.do",produces = {"text/html;charset=utf-8"})

缺点: 每个方法都要添加这个produces属性,所以直接在springmvc.xml添加2个转换器更为方便. 

来源:https://blog.csdn.net/weixin_61620939/article/details/128660983

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com