python2用nohup挂起运行时发生UnicodeEncodeError: ‘ascii‘ codec can‘t encode character中文输出错误

环境

centos7
python2.7和python3.6

测试代码

# -*- coding: UTF-8 -*-
from datetime import datetime

print(u"wwww")
print("目录存在: " + str(33))
print(u"为什么不行啊: ")
print u"dddd"


if __name__ == '__main__':
        current_time = datetime.now().strftime("%Y%m%d%H%M%S")
        ymd = current_time[0:8]
        day = current_time[6:8]
        hour = current_time[8:10]
        print("当前系统时间: " + current_time)

python2直接运行,正常
在这里插入图片描述

python3直接运行,print得加括号才能运行
在这里插入图片描述
删除print u"dddd"后,python3正常运行
在这里插入图片描述

带nohup挂起运行时出现编码错误

nohup python2

在这里插入图片描述
但是前面print("目录存在: " + str(33)),不带u在前面就能正常运行,按理说带u是对字符串进行unicode编码,习惯中文都带u来print的,结果到这就不行了,很奇怪!

nohup python3

但是用python3来运行又是正常的
在这里插入图片描述

后来查到说要在python运行前加上

import sys
reload(sys)
sys.setdefaultencoding(‘utf-8)

在这里插入图片描述
确实可以正常运行,但是明明文件头前面标注了# -- coding: UTF-8 --

后来又找到一种方法

在执行命令时加上 PYTHONIOENCODING=utf-8 在前面
在这里插入图片描述
这样就不用在代码中加入那三行sys代码了(因为本来不加也能正常运行的,不知道nohup啥问题)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值