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实现基于权重的随机数2种方法
Apr 28 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python统计单词出现的次数
Apr 04 Python
Python封装原理与实现方法详解
Aug 28 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
Jan 09 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
一文读懂python Scrapy爬虫框架
Feb 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类
2006/10/09 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
零基础php编程好学吗
2019/10/11 PHP
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
Vue3 中的数据侦测的实现
2019/10/09 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
工程测量与监理专业应届生求职信
2013/11/27 职场文书
六十岁生日答谢词
2014/01/10 职场文书
对公司合理化的建议书
2014/03/12 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
安全承诺书格式范本
2015/04/28 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
如何用python反转图片,视频
2021/04/24 Python
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python