ajax中文乱码怎么解决(spring ajax)

ajax中文乱码怎么解决(spring ajax)

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

大家好,今天来介绍ajax中文乱码怎么解决(ajax请求时传输中文乱码怎么解决的)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

在springmvc里发送ajax出现中文乱码应该如何处理

这次给大家带来在springmvc里发送ajax出现中文乱码应该如何处理,处理在springmvc里发送ajax出现中文乱码的注意事项有哪些,下面就是实战案例,一起来看一下。
使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的??,研究了一下,有几种解决办法。
我使用的是sping-web-3.2.2,jar
方法一:
在@RequestMapping里面加入produces = "text/html;charset=UTF-8"
@RequestMapping(value = "/configrole", method = RequestMethod.GET, produces = "text/html;charset=UTF-8")
public @ResponseBody String configrole() {
......
}方法二:
因为在StringHttpMessageConverter里面默认设置了字符集是ISO-8859-1
所以拿到源代码,修改成UTF-8并打包到spring-web-3.2.2.jar
public class StringHttpMessageConverter extends AbstractHttpMessageConverter
{
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
..........
}方法三:
修改org.springframework.http.MediaType它的构造方法的参数,并在applicationContext-mvc.xml 加入配置
public MediaType(String type, String subtype, Charset charset) {
super(type, subtype, charset);
}Xml代码
<bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">

巧陆
方法4
org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码。
StringHttpMessageConverter的父类里有孝陆顷个List supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的MediaType类型不在supportedMediaTypes列表中,则采用默认字符集。
解决办法,只需在配置文件中加入如下代码:

application/json;charset=UTF-8

如果需要处悉租理其他 MediaType 类型,可在list标签中加入其他value标签
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
Ajax请求async有哪些方式?应该如何使用

AJAX的XMLHttpRequest对象使用详解

ajax中文乱码怎么解决(spring ajax)

Ajax请求时传输中文乱码怎么解决

这次给大家带来Ajax请求时传输中文乱码怎么解决,解决Ajax请求时传输中文乱码的注意事项有哪些,下面就是实战案例,一起来看一下。
今天遇到一个问核卖题,有关ajax 请求中传输中文,遇到乱码的问题。
如下代码:
function UpdateFolderInfoByCustId(folderId, folderName, custId) {
$.ajax({
type: "Post",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
url: "http://localhost/CRM/Ashx/HandKBSucessCustomer.ashx?Method=UpdateCustomerByCustId&folderId="
+ folderId + "&folderName=" + encodeURI(encodeURI(folderName)) + "&custId=" + custId,
success: function (msg) {
alert(msg);
},
error: function (error) {
alert(error);
}
});
}如上代码 如果只是传“&foderName=”+folderName 的话,汉字就会产生乱码,如果经过encodeURL 转换两次的话,汉消氏拆字编码会变为类似
“%e6%b5%8b%eb%af%95” 的格式。转换为这种格式之后,在获取的时候在转码,如下所示:
public void UpdateCustomerByCustId()
{
int folderId = Convert.ToInt32(Request["folderId"]);
string folderName = Request["folderName"];
string folderName2 = Convert.ToString(System.Web.HttpUtility.UrlDecode(folderName));
int custId = Convert.ToInt32(Request["custId"]);
bool res = false;
try
{
res = CustomerBusiness.UpdateCustomerByCustId(folderId, folderName2, custId);
}
catch (Exception ex)
{
throw;
}
Response.Write(res);
}
}
}经此转换之后,即可获取到传输的汉字。
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
AJAX请求数组应该如何实现

在Ajax中怎样清除拿枣缓存

Ajax加载JSon数据时数据内中文乱码怎么办

这次给大家带来Ajax加载JSon数据时数据内中文乱码怎么办,解决Ajax加载JSon数据时数据内中文乱码的注意事项有哪些数型,下面就是实战案例,一起来看一下。
一、问题描述
使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢?
此处为的异步请求的配置:
Java代码
async: {
enable: true,
url: basePath + '/sysMenu/listSysMenu',
autoParam: ["id=parentId"]
}SpringMvc中文字符处理:
Java代码

薯孙猜

application/json;charset=UTF-8
text/html;charset=UTF-8

返回的结果有中文乱码:
Js代码
[
{
"menuId": "880095098165986816",
"menuName": "????",
"parentId": "880095098165986815",
"menuUrl": "http://localhost:8080/imovie-manage/sysMenu/listSysMenuUI",
"menuIcon": "",
"menuSort": 1,
"isEnable": 1,
"parentMenuName": "??",
"id": "880095098165986816",
"name": "????",
"pId": "880095098165986815"
},
{
"menuId": "880095098165986817",
"menuName": "???????",
"parentId": "880095098165986815",
"menuUrl": "http://localhost:8080/imovie-manage/sysMenu/treeSysMenuUI",
"menuIcon": "",
"menuSort": 1,
"isEnable": 1,
"parentMenuName": "??",
"id": "880095098165986817",
"name": "???????",
"pId": "880095098165986815"
}
]二、解决方案
经过排查,发现是SpringMvc中文字符处理的supportedMediaTypes少了一种类型。
从浏览器发送的请求来看:
异步刷新使用的是post请求,但从服务器返回的时候,Content-Type为:text/plain;charset=ISO-8859-1
charset是ISO-8859-1,而不凯兄是UTF-8,而SpringMvc处理的中文乱码没有包含这种类型,所以导致中文乱码。
所以最后的解决方法是在SpringMvc中文处理加上text/plain这个类型,如下:
Java代码
text/plain;charset=UTF-8 具体如下:
Java代码

application/json;charset=UTF-8
text/html;charset=UTF-8
text/plain;charset=UTF-8

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
实现无刷新下拉联动的Ajax+Servlet(附代码)

ajax获取json数据为undefined应该如何使用

JQueryajax返回json时出现中文乱码该如何解决

最近知罩有朋友反映使用jquery.ajax调用返回json时出现中文乱码,遇到此问题,非常棘手,下面我帮大家解决JQuery ajax 返回json时出现中文乱码问题,感兴趣的朋友跟着一起了解了解吧
使用jQuery ajax调用的返回json,中文乱码问题

Js代码如下:

Js代码

Java代码
JSONArray json = JSONArray.fromObject(SysList);//SysList是一个List
// 设置response的ContentType解决中文乱码
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(json.toString());
return null;
Java代码
JSONArray json = JSONArray.fromObject(SysList);//SysList是一个List
// 设置response的ContentType解决中文乱码
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(json.toString());
return null;
上面是我整理给大家的,希望今后会对大家有帮助搭乎闹。
相关文章:
Django框架如何使用ajax的post方法

django中使用jquery ajax post数据出现403错误的解决办法

详解ajax +jtemplate实现动态分页顷纯

AJAX之POST数据中文乱码如何解决

本文主要和大家分享AJAX之POST数据中文乱码如何解决,前端使用encodeURI进行编码,希望能帮助到大家。
var param = encodeURI(param);
$.ajax({
url: 'url',
methodtype: "POST"消侍,
async: false,
timeout: 60000,
contentType: "application/json",
data: {'param':param},
success: function(data) {
},
error: function(data) {
}
});后台java.net.URLDecoder进行解码
编解码工具
import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.net.URLEncoder;import org.apache.commons.codec.DecoderException;import org.apache.commons.codec.binary.Base64;import org.apache.commons.codec.binary.Hex;import org.apache.commons.lang3.StringEscapeUtils;/
* 封装各种格式的编码颂卜解码工具类.
* 1.Commons-Codec的 hex/base64 编码
* 2.自制的base62 编码
* 3.Commons-Lang的xml/html escape
* 4.JDK提供的URLEncoder
*
*/public class Encodes {
private static final String DEFAULT_URL_ENCODING = "UTF-8"; private static final char[] BASE62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray(); /
* Hex编码.
*/
public static String encodeHex(byte[] input) { return new String(Hex.encodeHex(input));
} /
* Hex解码.
*/
public static byte[] decodeHex(String input) { try { return Hex.decodeHex(input.toCharArray());
} catch (DecoderException e) { throw Exceptions.unchecked(e);
}
} /
* Base64编码.
*/
public static String encodeBase64(byte[] input) { return new String(Base64.encodeBase64(input));
} /
* Base64编码.
*/
public static String encodeBase64(String input) { try { return new String(Base64.encodeBase64(input.getBytes(DEFAULT_URL_ENCODING)));
} catch (UnsupportedEncodingException e) { return "";
}
}// /// * Base64编码, URL安全(将Base64中的URL非法字符拿樱吵'+'和'/'转为'-'和'_', 见RFC3548).// */// public static String encodeUrlSafeBase64(byte[] input) {// return Base64.encodeBase64URLSafe(input);// }
/
* Base64解码.
*/
public static byte[] decodeBase64(String input) { return Base64.decodeBase64(input.getBytes());
} /
* Base64解码.
*/
public static String decodeBase64String(String input) { try { return new String(Base64.decodeBase64(input.getBytes()), DEFAULT_URL_ENCODING);
} catch (UnsupportedEncodingException e) { return "";
}
} /
* Base62编码。
*/
public static String encodeBase62(byte[] input) { char[] chars = new char[input.length]; for (int i = 0; i < input.length; i++) {
chars[i] = BASE62[((input[i] & 0xFF) % BASE62.length)];
} return new String(chars);
} /
* Html 转码. 例如将 < 转成 &lt
*/
public static String escapeHtml(String html) { return StringEscapeUtils.escapeHtml4(html);
} /
* Html 解码.
*/
public static String unescapeHtml(String htmlEscaped) { return StringEscapeUtils.unescapeHtml4(htmlEscaped);
} /
* Xml 转码.
*/
public static String escapeXml(String xml) { return StringEscapeUtils.escapeXml10(xml);
} /
* Xml 解码.
*/
public static String unescapeXml(String xmlEscaped) { return StringEscapeUtils.unescapeXml(xmlEscaped);
} /
* URL 编码, Encode默认为UTF-8.
*/
public static String urlEncode(String part) { try { return URLEncoder.encode(part, DEFAULT_URL_ENCODING);
} catch (UnsupportedEncodingException e) { throw Exceptions.unchecked(e);
}
} /
* URL 解码, Encode默认为UTF-8.
*/
public static String urlDecode(String part) { try { return URLDecoder.decode(part, DEFAULT_URL_ENCODING);
} catch (UnsupportedEncodingException e) { throw Exceptions.unchecked(e);
}
}
}

分享到 :
相关推荐

long最大值是多少位(214748367是什么的最大值)

1、long最大值是多少位Long类型是Java语言中表示整数的数据类型之一,它可[...

tomcat虚拟主机有什么用(tomcat虚拟主机的配置)

现在开发JavaWeb应用。建立和部署Web内容是一件很简单的工作。使用Jakar[...

笔记本电脑怎么用触摸板(笔记本自带的触控板怎么打开)

1、笔记本电脑怎么用触摸板笔记本电脑的触摸板是一种常见的输入设备,它可以模拟鼠标的[...

mysql小数类型建表怎么用

mysql小数类型建表怎么用MySQL是一种常用的关系型数据库管理系统,它支持多种[...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注