Dubbo 服务提供者部署在GBK服务器环境的乱码问题

  |  
阅读次数
  |  
字数 269
  |  
时长 ≈ 1 分钟

1.场景

将服务部署在一台机器上,过后发现消费端在注册中心中获取服务时,
如果获取到该服务器上的服务进行请求,处理结果为乱码,而请求另外一台服务器的服务时,结果却是正常。

2.排查

经排查这台服务器上的服务器编码为GBK,而其他正常的服务器则为UTF-8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ locale
LANG=zh_CN.GBK
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK

3.解决

这时有两种解决方案:

  1. 修改系统的全局服务器编码为UTF-8(不知道为何,在启动脚本使用临时环境变量的方式提前执行了 export LANG=en_US.UTF-8 却无法生效。)
  2. 在启动脚本里,对jvm启动参数进行调整,设置编码格式,添加以下参数重启即可。
1
-Dfile.encoding=UTF-8