问题
在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码。后台Java代码:

@RequestMapping(value = "/upload", method = RequestMethod.POST,   produces = "text/json")
public @ResponseBody String upload(  @RequestParam("groupId") String groupId,  HttpServletRequest request,  HttpServletResponse response) {  //...  }  

解决
在produce参数中加入编码声明 charset=UTF-8
修改后的代码为:

@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "text/json;charset=UTF-8")
public @ResponseBody String upload(  @RequestParam("groupId") String groupId,  HttpServletRequest request,  HttpServletResponse response) {  //...  }  

参考资料1:

springMVC返回json数据乱码问题及@RequestMapping 详解

一、@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

1、 value, method;

  • value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
  • method: 指定请求的method类型, GET、POST、PUT、DELETE等;

2、 consumes,produces;

  • consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
  • produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

3、 params,headers;

  • params: 指定request中必须包含某些参数值是,才让该方法处理。
  • headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

二、json数据乱码

在springMVC controller中返回json数据出现乱码问题,因为没有进行编码,只需要简单的注解就可以了。

在@RequestMapping()中加入produces=”text/html;charset=UTF-8”属性即可,如下:

@RequestMapping(value="/respost",method=RequestMethod.GET,produces="text/html;charset=UTF-8")  @ResponseBody  public String postList(@RequestParam("topicId") String topicId){  List<Post> posts=new ArrayList<Post>();  System.out.println("topicId-----"+topicId);  posts=postService.findPostList(topicId);  JSONArray postJson=JSONArray.fromObject(posts);  return postJson.toString();  }

参考资料2:

三种方式解决你的js加载乱码

第一种方式—编码统一

我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你在加载js的时候,并没有声明js的编码格式,那么浏览器会默认的按照当前html的编码格式进行解析引入的js文件,如果你的js和本身页面编码不一样,并且js中引入了中文字符,那么肯定会出现乱码的。要知道,程序都是笨笨的。

第二种方式—在引入js的标签中加入charset属性

这样引入,那么这个xx.js就会以本身页面的编码进行解析,而如果两个的编码不一样,如果这个js是gbk的编码,那么我们可以这样写

<script src="../../lib/Plugins/datepicker_lang_zh_CN.js" charset="utf-8" type="text/javascript"></script>

那么,只要是保证这个js文件的确是gbk或者对应的,你自己写的编码,那么无论在哪种编码的页面中引用这个js,都不会出现编码问题,这样写才是最规范的,第一种方式会出现一种情况,就是有很少情况下,由于一些不规范的原因,我们会发现即使是编码统一的时候,也会出现乱码,那么我们最好就是用第二种方式来写。

第三种方式—用服务器语言声明header头信息

这种方式是比较少见的一种方式,适合某些特定的情况。编码信息都是在头信息中声明的。而js本身并没有像html mate标签这样的声明头信息的标签,所以要借助服务器语言,我是学php的,其header(“Content-Type:text/html;charset=gb2312″);就可以声明头信息,而如何写这个js,就是把js内容写在php文件中,这里就有一个知识点,就是js文件并不一定非写在js为后缀的文件中,其实可以写的服务器文件(php文件等)中,php以

<script type="text/jscript" charset="gbk" src="xx.php"></script>

在这个xx.php写

<?
$ip = getenv('REMOTE_ADDR');
echo "alert($ip);";
?>

这样我们访问这个html页面,就会弹出ip地址,我们就可以对他进行其他操作等。当然,既然是连接服务端文件,就不能是直接双击打开这个html了,一定是通过浏览器访问才可以,或者是连接这个php文件的src要写http形式,目的就是保证这个php文件要是通过服务器解析访问的,如果你这样写相对目录的形式连接php,你直接打开html,就相当于直接打开了这个php文件,而不是通过http访问的,这个php是不能被解析的。讲的复杂了,但是这是一个很重要的知识点。如果单从乱码而言,这种引用js文件的方式适合我们已经引用了,不能再修改这个引用文件了,比如我们在一些外链站发了文章,不能再修改了,那么,我们可以修改连接的我们网站上的这个js文件,当前前提是,连接的是服务端文件,我们就可以通过这样的方式解决。

Spring MVC Controller中返回json数据中文乱码处理相关推荐

  1. Spring MVC 3.0 返回JSON数据的方法

    Spring MVC 3.0 返回JSON数据的方法 1. 直接 PrintWriter 输出 2. 使用 JSP 视图 3. 使用Spring内置的支持 // Spring MVC 配置 <b ...

  2. springmvc提供RestController方法接口返回json数据中文乱码

    web应用使用@RestController @RequestMapping 注解提供http接口 项目中遇到被调用接口后返回的json数据中出现中文乱码的问题 @RequestMapping(met ...

  3. 用springmvc作接口时返回json数据中文乱码

    以前都是用springmvc做web项目,浏览器访问,所以没出现过fastjson中文乱码的问题,今天要做一个接口,结果杯具了中文乱码. 接口调用拿到返回数据疯狂的修改编码,结果无效,考虑是不是jso ...

  4. java 返回json乱码_java返回json数据中文乱码解决方案

    最近做报表功能时,从后台取的json数据出现中文乱吗,如下图: Paste_Image.png 然后进行了一些列的设置,比如 response.setContentType("text/ht ...

  5. java注解返回不同消息,Spring MVC Controller中的一个读入和返回都是JSON的方法如何获取javax.validation注解的异常信息...

    Spring MVC Controller中的一个读入和返回都是JSON的方法怎么获取javax.validation注解的错误信息? 本帖最后由 LonelyCoder2012 于 2014-03- ...

  6. python返回json数据_python和flask中返回JSON数据的方法

    在python中可以使用json将数据格式化为JSON格式: 1.将字典转换成JSON数据格式: s=['张三','年龄','姓名'] t={} t['data']=s return json.dum ...

  7. freetds php mssql 中文乱码,PHP读取mssql json数据中文乱码的解决办法

    PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. ...

  8. ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题

    一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { ...

  9. asp.net MVC控制器中返回JSON格式的数据时提示下载

    Asp.net mvc在接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("# ...

最新文章

  1. NLP领域的ImageNet时代:词嵌入已死,语言模型当立
  2. 华御密盾智能防信息泄密系统
  3. .net 文件类型 及说明
  4. Cpp 对象模型探索 / 带有虚继承类的构造函数的调用顺序
  5. Visual Studio 2019 使用 Live Share
  6. arcgis 出图背景_ArcGIS空间制图分析视频教程(二狮兄出品)含ArcMap
  7. hadoop--完全分布式运行模式
  8. linux网络编程客户端,Linux网络编程入门
  9. openCVPracticalExercise学习笔记03
  10. 7号团队-团队任务5:项目总结
  11. pyinstaller相关错误
  12. 【LOJ】#2187. 「SHOI2014」三叉神经树
  13. Unity 接入旷视Face进行人脸融合
  14. HC32F460 浮点运算开启
  15. 理解CMMI 3级过程域非常好的例子
  16. 【H5+ Quick-cocos2dx整合】之iOS 四 协调H5+和Quick-Cocos2dx之间工作
  17. Python实现小猪佩奇
  18. java日语_java中常用日语词汇整理
  19. Java小农养成记第二天
  20. 集中式版本控制 VS 分布式版本控制

热门文章

  1. 收购Roambi,SAP欲领导商务分析云迁移全球市场
  2. Linux下配置MySQL需要注意的几点
  3. DataContractJsonSerializer类
  4. 火狐一打开就弹出错误控制台 解决方案 及常用插件列表备份
  5. Guest权限突破8法(整理)
  6. 软件史上最伟大的十大程序员(图文)
  7. 从XML文件读取数据绑定到列表控件2
  8. shell中的>/dev/null 2>1(转载)
  9. 根据传递函数仿真模拟滤波器的波特图(持续更新中)
  10. spark广播变量的使用(转)