ajax提交 返回中文乱码问题
接口返回数据相关
使用@ResponseBody后返回NUll
使用@RequestMapping返回中文乱码
原因分析:(网上基本都是一致的答案)
首先: 确定的是(经过多次测试的结果)只有当返回值是 String时才会出现中文乱码,而当返回值是Map<String, Object>或者是其它类型时,并没有中文乱码的出现.
- public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");
尝试方法一: 在配置文件中的mvc:annotation-driven中添加如下代码
- <mvc:annotation-driven >
- <!-- 消息转换器 -->
- <mvc:message-converters register-defaults="true">
- <bean class="org.springframework.http.converter.StringHttpMessageConverter">
- <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
- </bean>
- </mvc:message-converters>
- </mvc:annotation-driven>
原理: StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放 StringHttpMessageConverter支持需特殊处理的 MediaType 类型,如果需处理的 MediaType 类型不在 supportedMediaTypes列表中,则采用默认字符集。
尝试方法二: 在配置文件中的mvc:annotation-driven中添加如下代码
- <mvc:annotation-driven>
- <mvc:message-converters>
- <bean class="org.springframework.http.converter.StringHttpMessageConverter">
- <property name="supportedMediaTypes">
- <list>
- <span style="white-space:pre"> </span> <value>text/html;charset=UTF-8</value>
- <value>application/json;charset=UTF-8</value>
- <value>*/*;charset=UTF-8</value>
- </list>
- </property>
- </bean>
- </mvc:message-converters>
- </mvc:annotation-driven>
原理: 原理同上,但是这里多加了几个value。
尝试方法三: 在@RequestMapping里的配置produces="text/html;charset=UTF-8;"
- @RequestMapping(value = "***",produces="text/html;charset=UTF-8;")
原理: 手动给对应的Accept返回制定格式编码数据。
尝试方法四: 在@RequestMapping里的并发配置produces={"application/json;","text/html;charset=UTF-8;"}
- @RequestMapping(value = "***",produces={"application/json;","text/html;charset=UTF-8;"})
原理: 手动给对应的Accept返回制定格式编码数据。
尝试方法五: 在@RequestMapping里的并发配置produces={"text/html;charset=UTF-8;","application/json;"}
- @RequestMapping(value = "***",produces={"text/html;charset=UTF-8;","application/json;"})
注意: 这里和上个方法的区别是,produces里面的顺序对调了
方法四和方法五对比分析:
produces={"text/html;charset=UTF-8;","application/json;"}
这样设置,这样普通浏览器的请求就能正常显示中文,而客户端的模拟请求(可以是ajax或http)则手动指定Accept的charset,即可正常接收中文。
客户端使用Ajax请求跨域问题
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
- <span style="white-space:pre"> </span>$.ajax(url, {
- data: data,
- dataType: "jsonp",
- jsonpCallback: 'testGetData',
- timeout: "15000", //超时时间设置为3秒;
- type: "POST",
- success: function(response) {
- var result = 'success:' + JSON.stringify(response);
- //返回的是utf8编码,需要手动转为utf16
- console.log(result);
- //alert(result);
- },
- error: function(error) {
- var result = 'error:' + JSON.stringify(error);
- console.log(result);
- //alert(result);
- }
- });
JSONP传递Java Web后台代码片段:
- //判断是否是jsonp请求
- String jsoncallback = request.getParameter("callback");
2.判断如果是JSONP的请求则用JSONP的返回参数,否则用正常的(示例里面使用了Jackson来辅助)
- public static String getJsonPData(String callbackName,Map<String, Object> data) throws JsonGenerationException, JsonMappingException, IOException{
- ObjectMapper mapper = new ObjectMapper();
- String json = mapper.writeValueAsString(data);
- System.out.println("jsonp回调:"+callbackName);
- System.out.println("jackson解析的字符串:"+json);
- String result = "";
- if(callbackName==null||callbackName==""){
- //普通请求
- result = json;
- }else{
- //jsonp请求,返回的格式是类似于一个函数的字符串形式(前端再执行这个回调来获取数据)
- result = callbackName+"("+json+")";
- }
- System.out.println("最终结果:"+result);
- return result;
- }
ajax提交 返回中文乱码问题的更多相关文章
- Ajax提交后台中文乱码问题
今天项目组同事反映,之前有一个正常的请求,今天突然后台获取参数的值出现了中文乱码,怀疑是之前更新jar包所致,笔者仔细想了想更新的内容,仿佛没有涉及到编码的变更啊,然后开始排查,首先后台加了强制以ut ...
- struts2 action获取ajax提交数据中文乱码问题
有个人和我问题相同,地址在这: 解决方法: 在ajax的属性添加这句:contentType:'application/x-www-form-urlencoded; charset=utf-8',
- spring ajax以及页面返回中文乱码问题解决
在spring配置文件中添加 <!--返回中文乱码--> <mvc:annotation-driven > <!-- 消息转换器 --> <mvc:messa ...
- Springboot @ResponseBody返回中文乱码
最近我在把Spring 项目改造Springboot,遇到一个问题@ResponseBody返回中文乱码,因为response返回的content-type一直是application/json;ch ...
- Tomcat JSP提交参数中文乱码问题解决
参考: http://blog.csdn.net/error_case/article/details/8250209 中文乱码是个老生常谈的问题,一般情况下,只要保证页面,web服务器,数据库的编码 ...
- jquery的ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...
- form提交数据中文乱码问题总结
一:form在前台以post方式提交数据: 浏览器将数据(假设为“中国”)发送给服务器的时候,将数据变成0101的二进制数据(假设为98 99)时必然要查码表,浏览器以哪个码表打开网页,浏览器就以哪个 ...
- ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 复制代码 代码如下: $.ajax({ dataType : ‘json',type : ‘POST',url : ‘ht ...
- 解决SpringMVC的@ResponseBody返回中文乱码
SpringMVC的@ResponseBody返回中文乱码的原因是SpringMVC默认处理的字符集是ISO-8859-1,在Spring的org.springframework.http.conve ...
随机推荐
- ThinkPHP+JQuery实现文件的异步上传
前端代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...
- 简单的词法设计——DFA模拟程序
实验一.简单的词法设计--DFA模拟程序 一.实验目的 通过实验教学,加深学生对所学的关于编译的理论知识的理解,增强学生对所学知识的综合应用能力,并通过实践达到对所学的知识进行验证.通过对 DFA 模 ...
- socketserver + ftp
--------------------------------------------生活不止眼前的苟且,还有诗和远方的田野. day 29 socketserver + ftp # # ----- ...
- Django的model form组件
前言 首先对于form组件通过全面的博客介绍,对于form我们应该知道了它的大致用法,这里我们需要明确的一点是,我们定义的form与model其实没有什么关系,只是在逻辑上定义form的时候字段名期的 ...
- 解决CPC撰写文档报错问题“无法获取“AxforApplication”控件的窗口句柄。不支持无窗口的 ActiveX 控件”
最近公司需要把官方CPC电子申请移植到项目中,在移植完成后,撰写文档总是出现“无法获取“AxforApplication”控件的窗口句柄.不支持无窗口的 ActiveX 控件”,另楼主头疼很久,网上寥 ...
- RabbitMQ总结
消息队列 三个业务场景:解耦.异步.削峰 带来问题 系统可用性降低:外部依赖越多,越容易挂掉. 系统复杂性提高:重复消费,消息丢失,消息传递的顺序性 一致性问题: 一.如何保证消息的可靠性传输(如何处 ...
- Python_练习题_49
# 3.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao','nezha'] def func(item): re ...
- python模块详解
什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...
- 软工+C(8): 提问与回复
// 上一篇:野生程序员 // 下一篇:助教指南 在线上博客教学里引入了第三方助教,助教在每次作业期间尽力完成"消灭零点评"的目标.然而紧接而来的问题是:学生对博客作业点评的回复率 ...
- Git使用过程中的问题
Q-1:怎么切换到远程的分支 本地已经有一个代码库了(是从github上clone的),但是现在远程库中一个新的branch,怎么拉取远程分支,并在本地创建该分支(内容一样).how to do? # ...