美文网首页Java技术分享
Servlet中使用JSON.toJSONString中文显示问

Servlet中使用JSON.toJSONString中文显示问

作者: it_hao528 | 来源:发表于2022-05-11 09:12 被阅读0次

    问题:

    Servlet中使用fastjson将通过

    JSON.toJSONString()
    

    方法将对象转换为JSON字符串后,在IDEA中打印了转换后的数据中文都是正常的,但是客户端和web收到的数据中,中文都显示成了问号?。这是怎么回事呢?

    问题分析:

    相信在第一时间想到的是转码出了问题。那么是在哪个环节转码出了问题呢?
    由于在IDEA控制台打印了转换后的JSON字符串是显示的正常的,可能就会觉得返回的数据应该也是正常的,但在使用

    response.getWriter().write(jsonString);
    

    输出给客户端数据后,客户端收到的数据的的确确是中文显示的问号?。所以这时候应该考虑是否就是在使用

    response.getWriter().write(jsonString);
    

    输出的时候出了问题。其实问题就出在这里。那么如何来解决呢?

    解决方法:

    分析了问题之后,大概确定了问题的所在位置,那么要解决就很容易了。
    这里有两个解决方案。

    方案一:

    我们知道客户端给后台传参时候可能会出现中文乱码的问题,相应的解决办法是对request进行相应的处理,比如处理post请求参数中文乱码问题可以进行如下设置:

    request.setCharacterEncoding("UTF-8");
    

    给客户端传数据用到的是response,那么response是否也有这个方法呢?答案显然是肯定的,所以可以设置:

    response.setCharacterEncoding("UTF-8");
    

    来解决给客户端传数据的中文乱码问题。

    方案二:

    其实还有一种方法也可以解决,就是设置responsecontentType如下:

    response.setContentType("text/html;charset=utf-8");
    

    同样也可以解决给客户端传数据的中文乱码问题。
    最后,希望可以帮助到有需要的码友。

    相关文章

      网友评论

        本文标题:Servlet中使用JSON.toJSONString中文显示问

        本文链接:https://www.haomeiwen.com/subject/deqdurtx.html