微信公众号接口返回值中文乱码
前言
用户在网页授权后,根据网页授权code获取用户信息时,请求微信接口获取到的返回值中文乱码,无法使用。后来百度了一下,找到了解决办法,这里记录一下。不过奇怪的是,并非所有项目这个场景下都是乱码,只有这一个项目是乱码,其他的项目正常。并且微信并非只有这一个接口会出现乱码问题,只要有中文返回值的接口,都有可能出现。所以无论微信什么接口,只要是返回值中文乱码,都可以使用以下方案解决。
原因分析
用户微信使用的编码格式为 ISO-8859-1
,并非常用的 utf-8
格式。
解决方案
在获取到微信接口返回值后,将返回值做一次编码格式转换即可。
String userInfoStr = restTemplate.getForObject(userInfoUrl, String.class);
userInfoStr = new String(userInfoStr.getBytes("ISO-8859-1"), "utf-8");