jenkins不识别中文的原因排查及解决

jenkins不识别中文的原因排查及解决

1. 本文解决问题

  1. jenkins创建任务时,命名字母英文都没问题,一旦写成了中文就报错。比如出现Malformed input or input contains unmappable chacrater错误。
  2. jenkins构建日志打印时,对于中文不识别都变成了???

2. 部署情况

   我们的jenkins是部署在centos服务器里,直接用docker下载的镜像运行的。版本是Jenkins 2.303.1

3. 问题排查

   出现了中文不识别情况,那肯定说明是字符集编码有问题,所以我们的思路肯定是要确认jenkins的字符集编码是否是utf-8

3.1 查看系统信息编码

   比如你的jenkins地址是http://localhost:8083,那就访问http://localhost:8083//systemInfo 即可显示系统信息的页面。(也可以点击【系统管理】-【状态信息】-【系统信息】查看),如下图:
在这里插入图片描述
   除了上图框选的,这个页面的下边还有一个sun.jnu.encoding变量也不是utf-8,显然jenkins编码不对。

3.2 查看系统配置编码

   系统配置的位置是在【系统管理】-【系统配置】-【系统配置】里,在里边查看下LANG变量值。如下图:
在这里插入图片描述
   上图最初不是C.UTF-8,是zh.CN.UTF-8。这里为啥改成这个,下边会说。

4. 问题解决步骤

   既然知道了是编码问题,然后我就开始了修改编码的操作。我是这么解决的。

4.1 docker启动脚本修改

   因为我们是用docker运行的,对于上边3.1所示的编码问题,我在启动脚本里加了下边框选的东西:
在这里插入图片描述
   第一个是让容器里边的字体能够和宿主机保持一致(可能跟这个没啥关系)。
   第二句主要是为了设置LANG变量为C.UTF-8,我刚开始设置的是zh.CN.UTF-8,并不管用,然后我搜到了下边一句话,恍然大悟。
在这里插入图片描述
   如果不在容器创建时设置LANG=C.UTF-8,会导致进入到容器里,不管你咋通过export 或者source命令修改变量,退出容器就失效了。
   第三句,是为了保证3.1那个file.encoding变成utf-8

4.2 jenkins界面上修改LANG参数

  我最初只是按照4.1步骤,改了docker启动脚本的编码,但是我发现在jenkins构建的时候,日志里一直都是???这玩意。我就到上边3.2那个位置。修改了LANG的变量。如下图:
在这里插入图片描述

5. 特别说明

  有很多小伙伴可能对于docker容器怎么看编码不是很清楚。可以按照下边步骤。
在这里插入图片描述
  这里如果不修改,有的时候默认是en开头,有的时候是POSIX
   docker启动脚本设置变量,要用-e传参,即:
在这里插入图片描述
   也有人觉得前边locale命令下,设置LC_ALL变量,就可以把所有LC_*的变量变过来,但是我没有尝试。
  以上是我遇到的问题和解决的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茁壮成长的凌大大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值