pyhton3输出中文也会报错?!!

将python2项目重构为python3后,在生产环境中使用uWSGI遇到print中文报错的问题。问题由runit启动项目和sys.stdout编码改变引起。通过查阅PEP3333和StackOverflow,发现需要设置uWSGI的编码格式。在uWSGI配置文件中设置python的编码格式为utf-8,解决了中文输出错误的问题。
摘要由CSDN通过智能技术生成

这篇文章是以前重构一个python2项目为python3时遇到的一个问题,当时记录下来没有发表,现在发表在这里当做存档。

众所周知,python3相比python2的一个最大的改变就是str统一是unicode编码的,带有中文的字符串再也不用写成  u’中文’ 这么麻烦,但是最近却遇到了 print(‘中文’)  报错

UnicodeEncodeError: 'ascii' codec can't encode characters in position 157-158: ordinal not in range(128)

这个问题只发生在生产环境上,本地环境没有问题。那么首先考虑的就是生产环境和本地环境差别在哪里了—–启动方式。

生产环境上使用了 uWSGI 来做服务器处理web请求,而本地环境不是。

尝试在 uWSGI 配置文件中加入编码设置:(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!

\[uwsgi\] 
...

env=LC\_ALL=zh\_CN.UTF-8 
...

重启,报错again!

经过百度和谷歌狂轰乱炸之后,也找不出什么有用的资料,再仔细想想,以前的项目使用了同样的 runit + uWSGI 为啥没问题呢?结合这一点去看 uWSGI 的官方文档,果然有Python 3的特别说明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值