解释器和终端

解释器和终端的编解码过程中的编码由系统来决定,不是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解析器

  1. 如果变量是字节串,则不做转换,直接使用
  2. 如果变量是字符串,则在使用时根据系统编码进行解码
  3. 通常这个过程用户无法干预,所以一般不会出现问题

输出到终端

解释器执行print语句时会将变量转化为字节串传递给终端进行展示

  1. 如果变量是字节串,则不做转换,直接输出
  2. 如果变量是字符串,则在使用时根据系统编码进行编码
  3. 如果用户输出的字节码和系统不一致,就会出现乱码
Copyright © zhujipeng 2017 all right reserved,powered by Gitbook 该文件修订时间: 2017-12-16 15:12:10

results matching ""

    No results matching ""