zoukankan      html  css  js  c++  java
  • [Jenkins]Console Output中文显示问号的问题解决

    ------------------------------------------------------

    如需转载,请注明出处。

    文章链接:https://www.cnblogs.com/dzblog/p/10342074.html

    ------------------------------------------------------

    问题

    一觉起来,发现控制台输出的中文是????。

    尝试解决

    参考了网上的解决方法,修改Jenkins全局属性,发现还是解决不了。

    查找原因

    经过几个小时的摸索,发现同一个job在不同的slave机器上表现不同。

    比如execute shell里只有一句话

    echo '中文'

    Slave1

    echo '??'

    Slave2

    echo $'中�226207'

    Slave3

    echo '中文'

    可以看出是因为Jenkins的原因,而是因为Slave1机器的某个设置,影响到了控制台的输出。

    解决

    1. 检查terminal所用shell

    ➜  ~ echo $SHELL
    /bin/zsh

    2. 在terminal里输入中文,尝试echo '中文'

    ➜  Home echo '<00e4><00b8><00ad><00e6><0096><0087>'
    中文

    发现无法正常显示。

    3. 在terminal里输入locale,查看

    ➜  ~ locale
    LANG=
    LC_COLLATE="C"
    LC_CTYPE="C"
    LC_MESSAGES="C"
    LC_MONETARY="C"
    LC_NUMERIC="C"
    LC_TIME="C"
    LC_ALL=

    发现LANG和LC_ALL均为空。

    4. 编辑 vim ~/.zshrc文件

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8

    要使修改立即生效,需在终端输入 source ~/.zshrc

    5. 编辑 vim ~/.bash_profile文件

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8

    要使修改立即生效,需在终端输入 source ~/.bash_profile

    6. 重新打开Terminal,检查locale

    ➜  Home locale
    LANG="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_CTYPE="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_ALL="en_US.UTF-8"

    发现LANG和LC_ALL已经不为空了。

    7. 再次构建同一个Job,检查控制台输出。

    可以看出已经正常显示中文了,问题解决。

    cheers~

  • 相关阅读:
    LeetCode-018-四数之和
    LeetCode-017-电话号码的字母组合
    LeetCode-016-最接近的三数之和
    LeetCode-015-三数之和
    LeetCode-014-最长公共前缀
    LeetCode-013-罗马数字转整数
    LeetCode-012-整数转罗马数字
    LeetCode-011-盛最多水的容器
    LeetCode-010-正则表达式匹配
    [leetcode]103. Binary Tree Zigzag Level Order Traversal二叉树Z形遍历
  • 原文地址:https://www.cnblogs.com/dzblog/p/10342074.html
Copyright © 2011-2022 走看看