客户反馈系统上富文本文章出现乱码如下图:
找到问题页面,就进入浏览器后台查看调用接口情况。前端调用接口返回的数据确实已经是乱码,那就是后端的问题。根据调用接口查看后端发现原来富文本文章内容是上传到OSS服务器上。我拿到OSS的URL直接调用发现内容没有出现乱码。那就是后端的问题,进一步深耕找到如下代码。
将文章内容读取读取出来返回给前端,读取过程涉及编码问题,大概因为编码不一致导致的。针对
InputStreamReader的构造器源码进一步分析。
项目采用系统默认的编码规则,测试环境默认UTF-8结果没有出现乱码。那么生产环境的默认编码可能不是utf-8.
进入生产环境Docker容器下,查看默认编码:
编码格式都是POSIX,此种编码不支持中文。原来中文乱码的原因在此。着手解决。
export LANG=C.UTF-8
清除缓存命令:
source /etc/profile
重新发布容器命令:
nohup java -Duser.timezone=GMT+8 -jar admin-api-1.0.0.jar > admin.log 2>&1 &
问题解决