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连接DB2数据库
Aug 27 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
Pandas 同元素多列去重的实例
Jul 03 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
Python爬虫动态ip代理防止被封的方法
Jul 07 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
Jul 20 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
Python中pass的作用与使用教程
Nov 13 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
Python数据模型与Python对象模型的相关总结
Jan 26 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
php获取参数的几种方法总结
2014/02/18 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
python Pexpect模块的使用
2020/12/25 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
函数指针的定义是什么
2016/08/14 面试题
品德评语大全
2014/05/05 职场文书
美术学专业求职信
2014/07/23 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
闪闪红星观后感
2015/06/08 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python