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的collections模块中的deque双端队列结构
Jul 07 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
Python人脸识别初探
Dec 21 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
python Pandas 读取txt表格的实例
Apr 29 Python
关于python2 csv写入空白行的问题
Jun 22 Python
详解django.contirb.auth-认证
Jul 16 Python
python利用百度AI实现文字识别功能
Nov 27 Python
Python实现最大子序和的方法示例
Jul 05 Python
tensorflow 模型权重导出实例
Jan 24 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
php根据日期判断星座的函数分享
2014/02/13 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php生成微信红包数组的方法
2019/09/05 PHP
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
DOM 高级编程
2015/05/06 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
python批量提取word内信息
2015/08/09 Python
Python中的字符串查找操作方法总结
2016/06/27 Python
Python对象属性自动更新操作示例
2018/06/15 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
迁户口计划生育证明
2014/10/19 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2015年科室工作总结
2015/04/10 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
golang中的并发和并行
2021/05/08 Golang