UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

在linux(ubuntu)下,输出文字时报错UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-2: ordinal not in range(128),经过查找方法1和方法2(方法2需要下载包,有时网络不佳,就选择方法1)都可以,记录备忘。

  • 方法1
  1. 使用python命令查看输出内容的编码方式

    >>>import sys
    >>>sys.stdout.encoding
    'ANSI_X3.4-1968'  # 编码方式是ANSI_X3.4-1968,所以任何中文都会报错。ASCII本来就不包含中文,所以一般发现这种错误就是把ASCII换成utf8
    
  2. 使用PYTHONIOENCODING
    运行python的时候加上PYTHONIOENCODING=utf-8,即:

    PYTHONIOENCODING=utf-8 python ***.py
    
  • 方法2

    所用的Linux系统不支持中文,遇见输出中文就报错。

  1. 安装中文支持包language-pack-zh-hans

    sudo apt-get install language-pack-zh-hans
    
  2. 修改/etc/environment(在文件的末尾追加)

    LANG="zh_CN.UTF-8"
    LANGUAGE="zh_CN:zh:en_US:en"
    
  3. 修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加)

    en_US.UTF-8 UTF-8
    zh_CN.UTF-8 UTF-8
    zh_CN.GBK GBK
    zh_CN GB2312
    
  4. 执行命令

    sudo locale-gen
    
  5. 对于中文乱码是空格的情况,安装中文字体解决。

    sudo apt-get install fonts-droid-fallback ttf-wqy-zenhei ttf-wqy-microhei fonts-arphic-ukai fonts-arphic-uming
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值