Python3 错误UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal

在Python3中,虽然比Python2更少遇到编码问题,但有时仍会遇到UnicodeEncodeError。当docker环境或命令行环境的默认编码不是UTF-8,或者处理的文件编码不正确时,会出现这类错误。解决方法包括检查并更改命令行环境的编码为UTF-8,或在读写文件时指定正确的编码方式。
摘要由CSDN通过智能技术生成

问题

之前在使用Python2的时候,经常会遇到编码相关的错误,异常头疼。主要是因为Python2字符串设计上有一些固有的缺陷:

  • 使用 ASCII 码作为默认编码方式,对中文处理很不友好。
  • 把字符串的牵强地分为 unicode 和 str 两种类型,误导开发者

与Python2不同,Python3默认使用utf-8编码方式,并且Python3的字符主要由两种:str/byte。因此正常情况下,Python3很少出现编码问题,但是最近在使用docker的时候,又发生了两次编码错误问题,分别是因为:

  1. docker环境(或当前命令行环境的默认编码不是utf-8)
  2. 处理的文件默认编码不是utf-8,而是ascii

解决方法

问题1

针对这两个可能的原因,首先判断系统的(或者当前命令行环境的)编码:

#首先进入python环境
import sys
sys.stdout.encoding
>>> 
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江前云后

文章结束的标识:打赏链接

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

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

打赏作者

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

抵扣说明:

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

余额充值