解释器和终端
解释器和终端的编解码过程中的编码由系统来决定,不是python的默认编码
➜ Downloads locale
LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=
类
Unix上默认是UTF-8
>>> import sys
>>> sys.stdin.encoding
'UTF-8'
>>> sys.stdout.encoding
'UTF-8'
>>> sys.getdefaultencoding()
'ascii'
从终端中输入
终端会将你通过键盘输入的字符转化为字节串传递给python解析器
- 如果变量是字节串,则不做转换,直接使用
- 如果变量是字符串,则在使用时根据系统编码进行解码
- 通常这个过程用户无法干预,所以一般不会出现问题
输出到终端
解释器执行print语句时会将变量转化为字节串传递给终端进行展示
- 如果变量是字节串,则不做转换,直接输出
- 如果变量是字符串,则在使用时根据系统编码进行编码
- 如果用户输出的字节码和系统不一致,就会出现乱码