问题
之前在使用Python2的时候,经常会遇到编码相关的错误,异常头疼。主要是因为Python2字符串设计上有一些固有的缺陷:
- 使用 ASCII 码作为默认编码方式,对中文处理很不友好。
- 把字符串的牵强地分为 unicode 和 str 两种类型,误导开发者
与Python2不同,Python3默认使用utf-8
编码方式,并且Python3的字符主要由两种:str
/byte
。因此正常情况下,Python3很少出现编码问题,但是最近在使用docker的时候,又发生了两次编码错误问题,分别是因为:
- docker环境(或当前命令行环境的默认编码不是
utf-8
) - 处理的文件默认编码不是
utf-8
,而是ascii
解决方法
问题1
针对这两个可能的原因,首先判断系统的(或者当前命令行环境的)编码:
#首先进入python环境
import sys
sys.stdout.encoding
>>>