django项目运行因中文而乱码报错的几种情况解决


Posted in Python onNovember 07, 2017

前言

django项目开发过程中,碰到了多种情况下的中文乱码报错,在这儿做一下处理总结。

报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position x-x: ordinal not in range(128)

1.因代码中的中文注释问题的报错

django项目的.py文件文件中加入了中文注释,经常会因此报错而导致无法运行,究其原因是编码的问题,最后的解决办法是直接在有中文注释的.py文件的顶部加上:

# -*-coding:utf-8 -*-

2.运行过程中的中文乱码的报错

首先确保连接的数据库的基础设置是utf-8:

django项目运行因中文而乱码报错的几种情况解决

然后确认django项目中的网页头部设置编码为utf-8,网页头部加上代码:

<meta charset="utf-8">

最后仍然报错就是因为django项目中我们没有指明编码方式,所以按照默认设置来,而非正常的utf-8,为:

django项目运行因中文而乱码报错的几种情况解决

所以项目最后需要在进行编码操作的地方,或者直接在settings.py中加入:

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

3.项目配置在debian系统中,FileField字段在admin中因中文文件名上传报错

在一个django项目中发现,在本地windows测试环境中,django admin的文件上传功能毫无障碍,可是当项目布置在debian环境中时,中文文件名的文件在admin中无法上传,并且报中文乱码的错,该错误的主要原因来自系统编码问题,该debian系统中未设置系统编码语言,均为默认设置,导致所布置的项目无法正常运行,解决如下:

(1).终端中操作安装locales

apt-get install locales

(2).重新选择字符编码

dpkg-reconfigure locales

(3).空格选择所有zh_开头的字符编码,OK确认下一步,选择中文UTF-8

django项目运行因中文而乱码报错的几种情况解决

django项目运行因中文而乱码报错的几种情况解决

django项目运行因中文而乱码报错的几种情况解决

(4).debian里需要在~/.bashrc里面最下面加入export LC_ALL=zh_CN.UTF-8或者直接运行export LANG=zh_CN.UTF-8

(5).最后直接reboot重启服务器,查看系统编码,UTF-8中文生效,locale命令可以直接查看系统编码设置,此时再运行django项目上传中文名文件无误。

附:django邮件乱码解决方案

python中有email.meeesage 和 email.header 对邮件中的非ASCII进行处理, 因此需要对sendMail函数中的参数进行如下处理:

# coding=utf8 
from email.message import Message 
from email.header import Header 
 
mail_from=Header('友好互动', 'utf8') + "god_chen@sina.com"#a************** 
mail_to="god_chen@sina.com" 
mail_subj=Header("测试","utf8")#b*************** 
mail_content='\r\n<div>测试测试邮件</div>\r\n<a href="www.61pad.com">儿童派</a>' 
 
msg=Message() 
msg['Mime-Version']='1.0' 
msg['Content-type']='text/html' 
msg['From']=mail_from 
msg['To']=mail_to 
msg['Subject']=mail_subj 
msg.set_payload(mail_content,'utf8')#c************** 
 
server=connect(sm_host, sm_port, sm_user, sm_password) 
server.sendmail(mail_from, mail_to, msg.as_string()) 
server.close() 
 
def connect(host,port,user,password): 
  "connect server" 
  server=smtplib.SMTP() 
  server.connect(host, port) 
  server.login(user, password) 
  return server

注:

     a、用Header对象处理发件人乱码

     b、用Header对象处理主题乱码

     c、用Message对象处理正文乱码

     这里统一采用utf8编码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
在Python中操作字符串之replace()方法的使用
May 19 Python
Python使用Supervisor来管理进程的方法
May 28 Python
深入学习Python中的装饰器使用
Jun 20 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python机器学习之神经网络(一)
Dec 20 Python
python @property的用法及含义全面解析
Feb 01 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
Apr 19 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
django如何实现视图重定向
Jul 24 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 #Python
python 简单备份文件脚本v1.0的实例
Nov 06 #Python
Python如何实现MySQL实例初始化详解
Nov 06 #Python
django rest framework之请求与响应(详解)
Nov 06 #Python
基于python中的TCP及UDP(详解)
Nov 06 #Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
Nov 06 #Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 #Python
You might like
php桌面中心(二) 数据库写入
2007/03/11 PHP
PHP学习笔记之数组篇
2011/06/28 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
Python多线程下载文件的方法
2015/07/10 Python
Python的Django框架安装全攻略
2015/07/15 Python
Python实现简单字典树的方法
2016/04/29 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
通过实例了解python property属性
2019/11/01 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
简单租房协议书范本
2014/08/20 职场文书
信访维稳承诺书
2015/05/04 职场文书
校园开放日新闻稿
2015/07/17 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
java泛型通配符详解
2021/07/25 Java/Android
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python