1.背景
项目引入图数据库Nebula进行关系图谱构建,于是在本地环境写好代码并进行了简单的测试后,发上了测试环境的docker容器当中,调用相关接口发现测试环境涉及到中文信息入图数据库出现乱码现象,刚好发现日志打印的日志有这种现象,刚好这次一起解决。
2.问题定位
1.由于发现是字符集编码的问题于是我们在java代码中把入图数据库的中文信息设置成utf-8格式来进行入库操作,发现并没有解决问题。
2.于是我们主要把问题定位在docker容器内字符集编码上面,查看了docker容器的字符集编码发现容器内编码确实不是utf-8,于是便想在测试环境内装语言包换成utf-8格式。由于测试环境是离线状态,于是便去在base harbor中改变语言包再去引入,最后成功修改测试环境字符集编码,但是发现并没有解决问题。
3.所以我们只能进行不断的尝试,在本地环境把代码打包成jar包(项目打包只要web下的jar包加配置文件,两者在文件夹同级别),尝试在服务器中直接部署一下(未在容器中部署)看是否会出现中文乱码现象,最后发现未出现乱码现象,于是最后就把问题定位在最后两种情况了
1.一个是idea打包的时候直接给设置utf-8编码了,容器自己打包的时候没有设置。
2.一个就是测试环境容器本身还存在一些问题。
3.解决方式
在不断的尝试与定位,我们决定修改测试环境shell脚本来启动jar包
之前的执行jar包的shell脚本未设置字符集如下
command: java -jar sword-java-0.0.1.1-SNAPSHOT.jar
修改后的shell脚本
command: java -Dfile.encoding=utf-8 -jar sword-java-0.0.1.1-SNAPSHOT.jar
然后执行修改后脚本发现成功解决了问题!
并且日志的乱码也解决了!