背景

项目中rest接口返回中文错误提示信息显示乱码。

环境

apache httpClient

spring mvc

tomcat

处理过程

分析理清问题

接口部署在本地tomcat上时,使用Apache httpClient客户端访问无乱码。

接口部署到服务器上的tomcat时,使用Apache httpClient客户端访问返回结果中文乱码。

初次排查

检查HttpClient请求Content-type为UTF-8,排除客户端编码问题。

再次排查

查看本地tomcat编码为默认编码,服务器tomcat编码为UTF-8编码。怀疑是tomcat编码问题导致的,
修改本地tomcat编码为UTF-8,测试无乱码,排除tomcat编码问题。

第三次排查

因为客户端和服务器编码都没有问题,怀疑是接口输出数据有问题。添加日志记录输出结果,发现数据无乱码。

怀疑是spring mvc 视图返回json字符串时编码有问题。百度一下发现spring mvc确实存在视图返回json字符串时使用的是iso-8859-1编码。

测试之,使用response out流输出json字符串,结果无乱码。

确定问题和spring mvc返回json数据编码导致。

暂时使用输出流直接输出json字符串。

后续再测试网上提供的其他解决方案。