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 06 Python
Python sys.path详细介绍
Oct 17 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
python实现验证码识别功能
Jun 07 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 Python
python基础之函数的定义和调用
Oct 24 Python
python 实现图片特效处理
Apr 03 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
一个域名查询的程序
2006/10/09 PHP
PHP 图片上传代码
2011/09/13 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
pytorch之ImageFolder使用详解
2020/01/06 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
公司任命书范本
2014/06/04 职场文书
材料物理专业求职信
2014/09/01 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
巾帼标兵事迹材料
2014/12/26 职场文书
南京导游词
2015/02/03 职场文书
土建施工员岗位职责
2015/04/11 职场文书
内勤岗位职责范本
2015/04/13 职场文书
横空出世观后感
2015/06/09 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python