Print to the console in django without UnicodeEncodeErrors

在线下环境的时候,正常运行,然后当线上环境,添加汉字报了如下的bug:

1 Traceback (most recent call last):
2 File "views.py", line 107, in <module>
3     print kwargs
4 UnicodeEncodeError: ‘ascii‘ codec can‘t encode character u‘\xa0‘ in position 20: ordinal not in range(128)

猜测应该是线上环境经过uwsgi的时候出了问题,然后去搜uwsgi django UnicodeEncodeError

得到类似的答案:

http://stackoverflow.com/questions/24887929/locale-on-django-and-uwsgi-unicodeencodeerror
http://chase-seibert.github.io/blog/2014/01/12/python-unicode-console-output.html

看了两篇文章后找到两种解决方案:

1.在uwsgi文件中添加如下配置

env = PYTHONIOENCODING=UTF-8

2.在django的settings.py文件中加入

import sys
import codecs
sys.stdout = codecs.getwriter(‘utf8‘)(sys.stdout)
sys.stderr = codecs.getwriter(‘utf8‘)(sys.stderr)

以上两种方案经尝试后都解决了那个该bug。

总结:Your termianl can typically handle UTF8 characters just fine. The issue is actually that Python is just getting confused about what encoding the terminal accepts.

时间: 2024-08-12 20:42:01

Print to the console in django without UnicodeEncodeErrors的相关文章

Django: 之Model、Cookis、Session

到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用MySQLdb来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wulaoerdb', passwd='1234', host='localhost') cursor = db.cursor() cursor.execute(

Django日志器的使用

Logging Mudel A quick logging primer Django uses Python’s builtin logging module to perform system logging. The usage of this module is discussed in detail in Python’s own documentation. However, if you’ve never used Python’s logging framework (or ev

Django之Model操作

Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost') cursor = db.cursor() cursor.

5Python全栈之路系列之Django模型续

Python全栈之路系列之Django模型续 连表操作一对一 在app的models.py文件内添加以下内容用户创建一对多关系的表: from django.db import models # Create your models here. class UserType(models.Model):     nid = models.AutoField(primary_key=True)     caption = models.CharField(max_length=32)      c

Django(三)

一.Form表单 在实际的生产环境中比如登录和验证的时候,我们一般都使用Jquery+ajax来判断用户的输入是否为空,假如JS被禁用的话,咱们这个认证屏障是不是就消失了呢?(虽然一般不会禁用掉但是还是存在风险)所以我们一般做两种认证一种是前端做一遍认证,在后端做一遍认证. 如果前端中要涉及到很多input,提交到后台,后台要一一取出,分别做验证,这是件很痛苦的事. def register(request): if request.method == "POST": ret = {&

Django【进阶篇 】

Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost') cursor = db.cursor() cursor.

Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM

web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单的web框架: 因为我们不希望接触到TCP连接.HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务. 这个接口就是WSGI:Web Server Gateway Interface. #---------------------myweb.py-------

django表单验证和跨站伪造csrf

Form验证 django中的Form一般有两种功能: 输入html 验证用户输入 django使用内置form方法验证表单提交的数据 html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> .error-msg { color: red; } <

Django~1 一 什么是web框架?

一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\