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中将字典转换成其json字符串
Jul 16 Python
微信跳一跳辅助python代码实现
Jan 05 Python
python针对excel的操作技巧
Mar 13 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
Python configparser模块常用方法解析
May 22 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 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执行速度全攻略(上)
2006/10/09 PHP
从php核心代码分析require和include的区别
2011/01/02 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
2014年元旦活动方案
2014/02/15 职场文书
舞蹈专业求职信
2014/06/13 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
政协委员个人总结
2015/03/03 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
西安事变观后感
2015/06/12 职场文书
Python中requests库的用法详解
2022/06/05 Python