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 初始化多维数组代码
Sep 06 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
详解python之协程gevent模块
Jun 14 Python
Python使用logging模块实现打印log到指定文件的方法
Sep 05 Python
详解Python3中的迭代器和生成器及其区别
Oct 09 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Django模板Templates使用方法详解
Jul 19 Python
django解决订单并发问题【推荐】
Jul 31 Python
python 数据提取及拆分的实现代码
Aug 26 Python
Python调用shell命令常用方法(4种)
May 11 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
动易数据转成dedecms的php程序
2007/04/07 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
采用call方式实现js继承
2014/05/20 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
教师评优事迹材料
2014/01/10 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
运动会拉拉队口号
2014/06/09 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
国王的演讲观后感
2015/06/03 职场文书
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫