zoukankan      html  css  js  c++  java
  • [python3]未配置locale的主机出现UnicodeDecodeError: 'ascii' codec can't decode byte 0x....的解决

    之前写的发邮件的程序部署到vps的时候出现了 UnicodeDecodeError: 'ascii' codec can't decode byte 0x.... 的错误。
    按理说UnicodeDecodeError是python2才有的错误,这在python3出现是什么情况?

    根据报错观察代码,发现打开文件的时候没指定encoding,于是指定'utf-8',改成这样:

    with open(mail_html, 'r', encoding='utf-8') as f:
        template = f.read()
    

    改完之后还是这个错误,但是byte 0xe6 变成了别的值,说明指定编码是有效的(在没指定locale的主机上居然按ascii读取文件???!! Σ( ° △ °|||)︴)

    问题还没完全解决,网上查了些资料,基本都是复制粘贴,看起来也没什么价值。

    再仔细想想,因为代码调用了print,那会不会是stdout不支持中文显示?
    于是找到之前看到的一段导入codecs设置stdout相关的代码:

    import sys
    import codecs
    sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
    

    这样设置之后,的确OK了。


    > 更新相关内容: > https://blog.lilydjwg.me/2016/10/21/set-stdout-encoding-in-python.206653.html
  • 相关阅读:
    Datasnap http用户验证
    Delphi 接口机制真相
    tfmxobject的序列化
    delphi md5算法
    delphi xe 窗体子控件实现窗体拖动
    Delphi笔记-自定义组件
    DELPHI RES资源文件使用方法
    Delphi中WebBrowser的使用技巧汇总
    Delphi XE调用第三方库Jni详细过程
    使用VLC进行屏幕广播
  • 原文地址:https://www.cnblogs.com/dylanchu/p/11141416.html
Copyright © 2011-2022 走看看