在Linux操作系统,使用jar包启动nacos客户端,出现了配置解析异常,服务启动失败。
排查问题时,从nacos下载了xxx.yaml,这个文件的编码是utf-8编码,有中文注释。配置文件看起来没毛病,应该是nacos客户端的编码问题。
百度了一下,大部分文章里的场景都是在windows下的发生的问题,原因是windows的默认编码是GBK,解决方法是在nacos客户端的启动命令中,添加启动参数-Dfile.encoding=utf-8
在linux环境下,大概也是类似的原因。linux默认编码utf-8,一般不会出现这个问题,也不需要加这个启动参数。那为什么会遇到这个问题?可能有人改了系统编码。
使用locale命令查看系统编码,可以看到这台机器的系统编码是zh_CN,确实不是utf-8。
如何解决?我打算试试把系统编码改为UTF-8,这样就不需要加启动参数了。
修改/etc/locale.conf
LANG=en_US.UTF-8
重新加载配置文件
source /etc/locale.conf
可以再检查一下编码是否修改成功
locale
系统编码改为UTF-8后,再重启客户端服务,这次终于启动成功了。