关于saltstack字符集的问题UnicodeEncodeError: ‘ascii‘ codec can‘t encode

在使用saltstack的时发现输入的内容带中文或者输出内容带中文就容易出错:

line 7, in <module>
    print(i, '\u7b2c{i}\u6761\u65e5\u5fd7'.format(i=i))
UnicodeEncodeError: 'ascii' codec can't encode character '\u7b2c' in position 0: ordinal not in range(128))

类似发生这样的报错,学网上的修改默认字符集也没用
最后在一篇文章中发现了答案
https://www.cnblogs.com/lytwajue/p/7168800.html
原来cmdrun的源码中又默认给改了字符集。。。。

python2.6的就如文章一样

python2.7或python3.6的好像都是如下这样的
源码路径
/usr/lib/python2.7/site-packages/salt/modules/cmdmod.py
/usr/lib/python3.6/site-packages/salt/modules/cmdmod.py

if reset_system_locale is True:
        if not salt.utils.platform.is_windows():
            # Default to C!
            # Salt only knows how to parse English words
            # Don't override if the user has passed LC_ALL
            #env.setdefault("LC_CTYPE", "C")
            #env.setdefault("LC_NUMERIC", "C")
            #env.setdefault("LC_TIME", "C")
            #env.setdefault("LC_COLLATE", "C")
            #env.setdefault("LC_MONETARY", "C")
            #env.setdefault("LC_MESSAGES", "C")
            #env.setdefault("LC_PAPER", "C")
            #env.setdefault("LC_NAME", "C")
            #env.setdefault("LC_ADDRESS", "C")
            #env.setdefault("LC_TELEPHONE", "C")
            #env.setdefault("LC_MEASUREMENT", "C")
            #env.setdefault("LC_IDENTIFICATION", "C")
            #env.setdefault("LANGUAGE", "C")
            pass
        else:
            # On Windows set the codepage to US English.
            if python_shell:
                cmd = "chcp 437 > nul & " + cmd

我全给注掉了,再带中文输入或者输出,也不会报编码错误了。误打误撞找到的解决方案,暂时没遇到其他问题。此方案仅供参考,望大牛能多多指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值