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实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Anaconda入门使用总结
Apr 05 Python
python实现zabbix发送短信脚本
Sep 17 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
Pandas中resample方法详解
Jul 02 Python
简单了解django索引的相关知识
Jul 17 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
Aug 07 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
python 实现简单的FTP程序
Dec 27 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
python 实现批量图片识别并翻译
Nov 02 Python
pd.drop_duplicates删除重复行的方法实现
Jun 16 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常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
PHP中的session安全吗?
2016/01/22 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
python开发之函数定义实例分析
2015/11/12 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
领导检查欢迎词
2014/01/14 职场文书
中学生获奖感言
2014/02/04 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
欢迎家长标语
2014/10/08 职场文书
大学生学年个人总结
2015/02/15 职场文书
北大自主招生自荐信
2015/03/04 职场文书
看雷锋电影观后感
2015/06/10 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python