jenkins windows 编码异常解决方案

该博客主要讨论了在Jenkins中使用Windows命令行时遇到的编码问题,包括中文乱码的情况。作者分析了原因,即cmd默认的GBK编码与jenkins的utf-8输入编码不匹配。尝试通过修改cmd编码为utf-8和创建GBK编码的bat文件来解决,但发现新的问题。最后,提出了将bat文件编码改为ANSI以匹配GBK编码的解决方案,从而成功解决大部分乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前文

  jenkins的插件提供了windows和linux命令行的使用方式,如下:

linux: sh ''
windows: bat ''

  但相对linux,windows在使用过程中会出现编码异常,比如输出一句中文,和查看文件夹目录,结果是中文乱码,文件夹目录正常输出。命令如下:

bat '''
echo '你好,世界'  # 输出乱码
echo 'hello world'  # 正常输出
dir     # 正常输出
'''

分析&解决

  原因是jenkins windows也就是我们默认的cmd,是以gbk编码的,但jenkins的输入是以utf-8编码的,所以导致中文乱码。解决方法网上有挺多,其中涉及到配置的,我试了都失败,比如jenkins端的设置改为Dfile.encoding=utf-8,并没什么用。第二种是指定cmd的输出为utf-8,我们可以用chcp查看当前cmd的默认编码,一般都是936,即GBK。修改成UTF-8的命令代码号是65001,同时修改bat的输出也按utf-8编码输出,改成如下:

bat encoding: 'utf-8', script: '''
chcp 65001
echo '你好,世界'  # 正常输出
echo 'hello world'  # 正常输出
dir     # 正常输出
'''

  以上述的方式运行后,可以解决绝大多数问题,但是有几个问题无法解决,第一个chcp 65001在执行后,一些常用的命令输出会以英文的形式,比如ipconfig,英文输出后其中夹杂的中文会乱码,而且,如果执行python文件、java文件,会发现输出的中文都乱码;我的理解是系统输出默认都是gbk,所以一旦指定了utf-8,会导致乱码。那如何解决呢?将其改为GBK即可,同时将命令封装成bat文件,命令如下:

bat encoding: 'GBK', script: '''
chcp 936
call execute.bat
'''

  其中bat文件则包含了上述的echo命令和dir命令,如果去执行,会发现可能会执行乱码。这个乱码的原因是,bat脚本如果默认编码不是ANSI编码的话,还是会出现utf-8编码的bat文件,而输出却是GBK,导致乱码,所以要将bat改为ANSI编码,ANSI编码是指根据不同地区所设置的默认编码,比如中国地区就是ANSI=GBK,台湾则是ANSI=BIG5。依次类推。ANSI编码的更改可以用notepad编辑修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值