Jenkins Slave Windows输出乱码

1. 现象

不使用mask-passwrd一切正常,使用后控制台中文乱码

Windows为slave,Jenkins是Centos Linux,执行相关Bat任务,乱码

Jenkins Slave Windows输出乱码

1.1 Windows中执行命令无误

Jenkins Slave 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

Jenkins Slave Windows输出乱码

3.2 Slave Windows设置环境变量

**在Windows节点中配置环境变量

【配置从节点】–>【Environment variable】

添加LANG: zh_CN.UTF-8

Jenkins Slave Windows输出乱码

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编码格式】

Jenkins Slave Windows输出乱码

3.5 其他

有兴趣的小伙伴,可以将Windows的默认编码格式更改,新创建的文件都将是UTF-8编码

【控制面板】– 【时钟与区域】– 【区域】– 【管理】–【更改系统区域设置】

也可以使用快捷键【运行】– intl.cpl

勾选Beta版:使用Unicdoe UTF-8提供全球语言支持

重启电脑

Jenkins Slave Windows输出乱码

Jenkins Slave Windows输出乱码

Jenkins Slave Windows输出乱码

Jenkins Slave Windows输出乱码

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...