工程中莫名奇妙出现html页面访问出现乱码,html页面编码为utf-8,html页面文件保存格式也为utf-8, tomcat也设置了utf-8编码,工程部署到linux服务器上,linux服务器的默认编码为LANG=zh_CN.UTF-8 实在是不知道哪里导致了html页面直接访问出现乱码。且shell脚本运行过程打印的日志文件也是乱码。
通过定位,发现是jenkins 远程启动tomcat的原因。
jenkins采用docker 部署,由于在docker容器中采用的jdk为openjdk:8-jdk ,其设置了编码格式为LANG=C.UTF-8,所以docker容器中的编码为C.UTF-8。在jenkins中采用ssh -t -t 命令远程执行了服务器上tomcat的启动,由于两个环境的编码格式不同,通过ssh 虚拟终端执行时调用的是LANG=C.UTF-8 这个编码,实际访问时,环境编码为zh_CN.UTF-8 ,导致乱码出现。
修改方式:
修改jenkins docker容器的编码为zh_CN.UTF-8,但是导致jenkins运行时乱码。
所以在调用ssh -t -t 之前 先运行export LANG=zh_CN.UTF-8 设置下终端的编码。