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

如右 返回 "text":"娴嬭瘯@绛夐绛夐洦绛夐洦瀛?, 请问如何处理?我这样处理:String a =new String(json.getBytes(),"UTF-8");中文大部分能够正常显示了,但是还有少部分是"?",请问怎么解决?

    【 解决方法】:

    @RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8")

    /**输入手机号码后判断手机号是否存在*/
    @RequestMapping(value="/getphone",produces = "text/plain;charset=utf-8")
    @ResponseBody
    public 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中添加】:

    <!-- 处理请求返回json字符串的中文乱码问题 -->

    <mvc:annotation-driven>
    <mvc:message-converters>
    <bean

    class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">
    <list>
    <value>application/json;charset=UTF-8</value>
    </list>
    </property>
    </bean>
    </mvc:message-converters>
    </mvc:annotation-driven>

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-06-21
一个国标一个通标 数据库编码 和你java的编码格式不一致,看起来像是 GBK--》UTF8 你的java 是gbk 数据库是UTF8 数据库编码 和你java的编码统一都用GBK、GB2312应该没有问题

服务器返回的是utf-8,jsp页面上也是utf-8,数据库也是utf-8怎么就是乱码呢!!!!问题出在getHttpResponse 输入流!in = new BufferedReader(new InputStreamReader(connection.getInputStream()));改为in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
///////////以下如果都试过了还无效,你可以找找你的输入流输出流是不是有问题////////////////URLDecoder.decode(URLDecoder.decode(json, "GBK"), "UTF-8");response.setContentType("text/html;charset=utf-8");json =new String(json.getBytes(),"UTF-8");
为了50分也是拼了 解决了请点赞 没决绝也别踩 为你百度半天
第2个回答  2018-06-22
使用jQuery ajax调用的返回json,中文乱码问题

Js代码如下:

$.ajax({ url: '/test/testAction.do?method=test', type: 'POST', dataType: 'json', timeout: 5000, async: false, error: function(){ alert('获取数据失败!'); }, success: function(json){ jsObject = eval(json); } }); return jsObject;
Js代码

<span style="font-size: x-small;">$.ajax({ url: '/test/testAction.do?method=test', type: 'POST', dataType: 'json', timeout: 5000, async: false, error: function(){ alert('获取数据失败!'); }, success: function(json){ jsObject = eval(json); } }); return jsObject;</span> action:
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代码 <span style="font-size: x-small;">JSONArray json = JSONArray.fromObject(SysList);//SysList是一个List // 设置response的ContentType解决中文乱码 response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(json.toString()); return null;</span>
第3个回答  2018-06-22
服务器是UTF-8吗,数据库是UTF-8吗?
getHttpResponse 输入流的位置怎么写的?
如果是这样,in = new BufferedReader(new InputStreamReader(connection.getInputStream()));改成这样,in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
如果都试过了还无效,你可以看看你的输入流输出流是不是有问题
URLDecoder.decode(URLDecoder.decode(json, "GBK"), "UTF-8");
response.setContentType("text/html;charset=utf-8");
json =new String(json.getBytes(),"UTF-8");
第4个回答  2018-06-21
你的json 字符串的内容本来就乱码了吧
你可以在获取字符串 json的地方做编码处理
你的代码是 字符串->byte[]->字符串 所以那个UTF8 可能效果不到
如果解决乱码的话 需要的是 byte[]->转字符串
转码应该在JSON 之前 不知在json 之后
相似回答