jenkins windows 编码异常解决方案

本文详细探讨了在Jenkins中使用Windows命令行时遇到的中文乱码问题,分析了原因在于CMD默认GBK编码与Jenkins UTF-8编码不匹配。文章提出了解决方案,包括通过`chcp 65001`切换到UTF-8编码以及创建GBK编码的BAT文件执行命令。然而,这种方法可能导致某些命令和程序输出的中文仍然乱码。作者还分享了针对不同场景的调整策略,如改为GBK编码避免问题,但未找到解决Golang输出中文乱码的完美方法。

摘要生成于 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编辑修改。
  但用上述的方式,可以解决绝大多数情况,比如python的中文输出、java的中文输出,以及git log等,但是golang编译的中文输出是会乱码,这点目前还没有比较好的解决方式,如果有知道的,可以麻烦告诉我下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值