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中属性和描述符的正确使用
Aug 23 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
python向图片里添加文字
Nov 26 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
python用Configobj模块读取配置文件
Sep 26 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 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垃圾回收机制对内存泄露的处理
2013/06/14 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
Javascript - HTML的request类
2006/07/15 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
Python中文件操作简明介绍
2015/04/13 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
python在文本开头插入一行的实例
2018/05/02 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Python Django 命名空间模式的实现
2019/08/09 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
python实现自动打卡的示例代码
2020/10/10 Python
编辑求职信样本
2013/12/16 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
入党政审材料范文
2014/12/24 职场文书
个人汇报材料范文
2014/12/30 职场文书
生日答谢词
2015/01/05 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
Java 数据结构七大排序使用分析
2022/04/02 Java/Android