1. 现象
不使用mask-passwrd一切正常,使用后控制台中文乱码
Windows为slave,Jenkins是Centos Linux,执行相关Bat任务,乱码
1.1 Windows中执行命令无误
2. 原因分析
Jenkins终端编码解码方式不一致
同时Windows端默认GBK编码,而Jenkins都已经设置为UTF-8,在执行过程中,如果执行脚本,脚本应该更改为UTF-8
如:chcp 65001
3. 解决方法
3.0 en_US.UTF-8 和 zh_CN.UTF-8区别
根据网上说法:
都属于UTF-8的编码方式,区别只是语言环境,比如时间 、数字等习惯的不同,字符集是 Unicode,包含的字符数量是基本上一样的
en_US.UTF-8:你说英语,你在美国,字符集是utf-8
zh_CN.UTF-8:你说中文,你在中国,字符集是utf-8
3.1 Jenkins设置Master为UTF-8
【Manage Jenkins】--> 【Configure System】--> 【全局属性】-->【Environment variable】
添加LANG值: zh_CN.UTF-8
3.2 Slave Windows设置环境变量
**在Windows节点中配置环境变量
【配置从节点】-->【Environment variable】
添加LANG: zh_CN.UTF-8
3.3 设置JAVA连接环境
在Windows节点中配置环境变量
【配置从节点】-->【Environment variable】
添加JAVA_OPTS: -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8
如上图
3.4 修改文件编码如果以上还不起作用
将文件全部转换为UTF-8编码
- Jenkins调用时,起始行增加切换编码方式
- chcp 65001
:: 65001 是UTF-8的编码 - 文件更改为UTF-8编码
- 以Notepad++为例:
- 菜单栏选择【编码】--> 【转为UTF-8无BOM编码格式】
3.5 其他
有兴趣的小伙伴,可以将Windows的默认编码格式更改,新创建的文件都将是UTF-8编码
【控制面板】-- 【时钟与区域】-- 【区域】-- 【管理】--【更改系统区域设置】
也可以使用快捷键【运行】-- intl.cpl
勾选Beta版:使用Unicdoe UTF-8提供全球语言支持
重启电脑