软件测试学习 之 Pycharm 乱码问题(四)控制台中执行python语句显示乱码

笔者使用的python解释器版为python3.7,pycharm版本为pycharm2018.3
如无特殊说明,代码均在此环境执行

目录
一、pycharm控制台
二、修改项目编码对于控制台的影响
三、print函数的执行过程
四、print函数与sys.stdout.encoding的关系
五、python控制台与系统命令

一、pycharm控制台

常见的pycharm的控制台有三个:
运行输出控制台命令终端控制台python控制台ipython控制台
在这里插入图片描述
设置ipython控制台,如果安装有ipython则启动
在这里插入图片描述
是否有ipython,可以通过选择编译器查看
在这里插入图片描述
选择python控制台时,pycharm会自动转为ipython
在这里插入图片描述

二、修改项目编码对于控制台的影响

之前在研究乱码问题时,已经知道,修改项目编码会直接影响项目文件的显示
Pycharm 乱码问题(一) 文件和代码内容乱码
这里再来谈谈项目编码对与控制台的影响
首先,将项目编码由原来的UTF-8改为GBK
在这里插入图片描述
然后分别使用python源文件和终端获取如下几个值

  1. 系统环境变量里是否包含PYTHONIOENCODING
  2. 系统环境变量PYTHONIOENCODING的值
  3. 是否是tty设备
  4. 当前标准输出编码
  • 注:tty设备包括如下几种
    (1)串口端口终端
    (2)控制终端
    (3)伪终端
    (4)控制台终端
    (5)虚拟终端
    详见 tty各种设备的情况

获取方式如下:

# 系统环境变量里是否包含PYTHONIOENCODING
os.environ.__contains__('PYTHONIOENCODING')
# 系统环境变量PYTHONIOENCODING的值
os.environ.get('PYTHONIOENCODING')
# 是否是tty设备
sys.stdout.isatty()
# 标准输出编码
sys.stdout.encoding

 
使用各个终端分别执行

run—运行控制台

代码如下:

import sys
import os
print("os.environ.__contains__('PYTHONIOENCODING'): ",
      os.environ.__contains__('PYTHONIOENCODING'))
      
if os.environ.__contains__('PYTHONIOENCODING'):
    print("os.environ.get('PYTHONIOENCODING'): ",
          os.environ.get('PYTHONIOENCODING'))
          
print('sys.stdout.isatty(): ', sys.stdout.isatty())
print('sys.stdout.encoding: ', sys.stdout.encoding)

运行结果如下:

os.environ.__contains__('PYTHONIOENCODING'):  True
os.environ.get('PYTHONIOENCODING'):  GBK
sys.stdout.isatty():  False
sys.stdout.encoding:  GBK

在pycharm中显示如图所示
在这里插入图片描述
输出编码sys.stdout.encoding的值随着项目编码而改变,同时
环境变量PYTHONIOENCODING的值也随之改变
此时,强制改变PYTHONIOENCODING的值,不会影响sys.stdout.encoding的值

os.environ.update(PYTHONIOENCODING='UTF-8')
print("os.environ.get('PYTHONIOENCODING'): ",
      os.environ.get('PYTHONIOENCODING'))
print('sys.stdout.encoding: ', sys.stdout.encoding)

结果如下:

os.environ.get('PYTHONIOENCODING'):  UTF-8
sys.stdout.encoding:  GBK

 

Terminal—本地系统命令行终端

执行结果如下:


>>> import sys
>>> import os
>>> os.environ.__contains__('PYTHONIOENCODING')
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值