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脚本来实现最简单的FTP下载的教程
May 04 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
在django中自定义字段Field详解
Dec 03 Python
Python接口测试get请求过程详解
Feb 28 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
python rsa-oaep加密的示例代码
Sep 23 Python
Python识别处理照片中的条形码
Nov 16 Python
python3 删除所有自定义变量的操作
Apr 08 Python
详解Python requests模块
Jun 21 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/02/23 PHP
深入分析php之面向对象
2013/05/15 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python元字符的用法实例解析
2018/01/17 Python
单利模式及python实现方式详解
2018/03/20 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python反编译学习之字节码详解
2019/05/19 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
没编程基础可以学python吗
2020/06/17 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
巴西Mr. Cat在线商店:购买包包和鞋子
2019/09/08 全球购物
大学毕业自我鉴定范文
2014/02/03 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL