Servlet中使用JSON.toJSONString中文显示问号解决办法

问题:

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");

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it_hao528

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值