大家好,今天来介绍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请求时传输中文乱码怎么解决
这次给大家带来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 转码. 例如将 < 转成 <
*/
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);
}
}
}