东方通部署Java项目,含中文请求乱码问题

一、背景:

近期上线了一套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”,重启东方通。

成功!

经验分享 程序员 微信小程序 职场和发展