一、背景:
近期上线了一套Java系统,用户管理中新增的时候,需要先检验新增的用户帐号是否在系统中已存在,查重功能在本地已测试通过,但后期部署至东方通服务器出现在输入框内输入中文后,查重功能出现异常。查看后台请求参数发现大量中文出现乱码。
二、问题发现:
1、继续测试查重输入框
发现当输入重复的英文字母,可以查到重复内容,并返回正确结果
当输入重复的中文时,查重失败
2、查看请求参数及返回结果
发现请求参数正确,返回结果与预期不符(应返回“该值不可用,系统中已存在”)
3、查看后台接口
此时,发现请求的参数中文已经出现乱码,因而对参数数据进行查重时未发现重复项。
三、问题排查
1、排查浏览器问题。
(1)在测试服务器上,使用Google Chrome浏览器与Microsoft Edge浏览器分别测试查重功能,结果均为中文无法查重。
(2)在开发本地使用Google Chrome浏览器测试查重功能,中文可以查重。
本地启动项目使用相同浏览器
2、排查系统问题
(1)部署环境为Ubuntu系统,查看系统编码。
echo $LANG
Linux系统编码均为zh_CN.UTF-8,没有问题
3、排查东方通问题
将系统部署至tomcat服务器上,使用Google Chrome浏览器测试查重功能,中文可以查重。
将系统部署至东方通服务器上,使用Google Chrome浏览器测试查重功能,中文无法查重。
四、问题解决:
1、在东方通的TongWeb7.0/conf/目录下找到tonweb.xml(配置文件)
2、打开后找到请求端口,并查看编码方式
可以看到,东方通默认请求编码为“GBK”,将其改为“UTF-8”,重启东方通。