如何解决JSON返回的中文乱码?

2024-05-08 18:57

1. 如何解决JSON返回的中文乱码?

【 解决方法】:
@RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8")
/**输入手机号码后判断手机号是否存在*/@RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8")@ResponseBodypublic String getphone(String phone,HttpSession session){Users u=service.selectPhoneService(phone);if(u==null){//如果为空,则需要注册String str="请您先注册,再登录。";session.setAttribute("str", str);return "请您先注册,再登录。";}return "true";

【方法二,在spring-mvc.xml中添加】:

<bean
class="org.springframework.http.converter.StringHttpMessageConverter">application/json;charset=UTF-8

如何解决JSON返回的中文乱码?

2. java crawler4j抓取页面上的动态信息 结果返回的json值里面的中文变为乱码

在Response添加编码
response.setContentType("text/json");  
response.setCharacterEncoding("UTF-8"); 

如果还是不行,请检查web端写入的时候,是否规定了
data.put("no", java.net.URLEncoder.encode("终极解决办法", "utf-8"));

3. (java)jsp页面ajax发出请求返回json格式数据 中文乱码问题

你如果没有使用编码集过滤器,
就需要手动设置response的编码集
response.setCharacterEncoding("UTF-8");
这句话要放在这个方法的最前面,就是设置返回头的前面
如果页面传入的参数,在获取时乱码,则需要
 request.setCharacterEncoding("UTF-8");

(java)jsp页面ajax发出请求返回json格式数据 中文乱码问题

4. java 接受前台json对象,中文乱码

额 怎么会是乱码的啦你的后台要设置response的utf8的啦你该这样写jquery的json的啦        var ajaxurl = path + "\/ajaxServlet?getMeetingId=getMeetingId";	var para = "&dayinfo=" + dayStr;	var meetingidx = 0;	$.ajax(	{		url : ajaxurl,		type : 'POST',		dataType : 'json', // json,xml		async : false,   // 异步默认true		timeout : 20000,		data : para,		error : function()		{		},		success : function(jsonOBJ)		{			meetingidx = jsonOBJ.meetingid;		}	});

5. Java使用百度API store返回JSON数据为unicode编码,怎么转化为中文

String str = "\u8eab\u4efd\u8bc1\u53f7\u7801\u4e0d\u5408\u6cd5!";  
byte[] bt = str.getBytes("utf-8");    
String ret = new String(bt, "utf-8");  
System.out.println(ret);

Java使用百度API store返回JSON数据为unicode编码,怎么转化为中文

6. 新浪API获取签到数据Java jsonobject错误

错误直译是JSON格式的数据必须以"{"开始。没用过新浪API,猜测可能是因为对象含有中文,而编码设置不正确导致的。StatusWrapper不知道是不是你自己的对象,可以先将这个java文件的编码格式设置为“UTF-8”,或者把“已填”随便换成其他英文或数字字符试试是否还报错。

7. Javaweb返回给Android客户端json中文字符乱码

JavaWeb的各种中文乱码终极解决方法:
一、Servlet输出乱码
1. 用servlet.getOutStream字节流输出中文,假设要输出的是String str ="测试中文"。
1.1 若是本地服务器与本地客户端这种就不用说了,直接可以out.write(str.getBytes())可以输出没有问题。因为服务器中用str.getBytes()是采用默认本地的编码,比如GBK。而浏览器也解析时也用本地默认编码,两者是统一的,所以没有问题。
1.1 若服务器输出时用了, out.write(str.getBytes("utf-8"))。而本地默认编码是GBK时(比例在中国),那么用浏览器打开时就会乱码。因为服务器发送过来的是utf-8的1010数据,而客户端浏览器用了gbk来解码,两者编码不统一,肯定是乱码。当然,你也可以自己将客户端浏览器的编码手工调用下(IE菜单是:查询View->编码encoding->utf-8),但是这种操作很烂,最好由服务器输出响应头告诉,浏览器用哪种编码来解码。所以要在服务器的servlet中,增加response.setHeader("content-type","text/html;charset=utf-8"),当然也可直接用简单的response.setContentType("text/hmtl;charset=utf-8")。两种的操作是一样一样的。
2. 用servlet.getWirter字符流输出中文,假设要输出的是String str ="测试中文乱码"。
2.1 若写成out.print(str)输出时,客户端浏览器显示的将全是多个?????的字符,代表在编码表中肯定就找不到相应的字符来显示。原因是:servlet.getWriter()得到的字符输出流,默认对字符的输出是采用ISO-8859-1,而ISO-8859-1肯定是不支持中文的。所以肯定要首先要做的第一件事:是要将服务器对象输出字符能支持中文的。其次服务器向客户端写回的响应头要告诉客户端是用了哪种编码表进行编码的。而实现这两个需求,只需要response.setContentType("text/hmtl;charset=utf-8")。就搞定了。特别注意:response.setContentType("text/html;charset=utf-8")要放在PrintOut out = response.getWriter()代码的前面,否则只是有告诉客户端用什么码表编码的功能,而服务器端还是用ISO-8859-1编码了。再特别提示下:在同一Servlet中的doGet或doPost方法中,不能既用response.getOutputStream又用response.getWriter,因为这两种response的响应输出字节流与字符流是冲突的,只能用其一。
二、Servlet文件下载,中文乱码情况。
关键是下载时响应头 content-disposition中attachment;filename=文件名。这个文件名filename不能是含有中文字符串的,要用URLEncoding编码进行编码,才能进行进行http的传输。
三、Servlet的response增加addCookie,cookie中value的中文码问题解决方法。若想将cookie中存放中文的值,必须用Base64编码后,发给客户浏览器端进入存储。而下次客户端浏览访问是带回来的cookie中的值,是经过Base64编码的,所以需要用Base64解码即可。 Base64编码主要是解决将特殊字符进行重新编码,编码成a-b、A-B、0-9、+与/,字符52,10个数字与一个+,一个/ 共64个字符。它的原理是将原来3个字节的内容编码成4个字节。主要是取字节的6位后,在前面补00组成一个新的字节。所以这样原来的3个字节共24,被编码成4个字节32位了。

四、获取请求参数乱码
GET方式的乱码:
如CN,直接用request.getParameter得到的字符串strCN将会乱码,这也是因为GET方式是用http的url传过来的默认用iso-8859-1编码的,所以首先得到的strCn要再用iso-8859-1编码得到原文后,再进行用utf-8(看具体页面的charset是什么utf-8或gbk)进行解码即可。new String(strCn.getBytes(“ISO-8859-1”),“UTF-8”);

Javaweb返回给Android客户端json中文字符乱码

8. js接收json数据中文乱码问题

楼主,既然你返回的是json数据,那么你就应该设置ContentType类型为application/json

即:resp.setContentType("application/json");

对应的中文文本的类型这样设置res.setCharacterEncoding("ISO-8859-1"); 后边的"iso"变为"ISO",希望对你有所帮助!

还是有问题的话,还望继续回复!