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抓取网页图片示例(python爬虫)
Apr 27 Python
在Python中操作列表之list.extend()方法的使用
May 20 Python
Python做简单的字符串匹配详解
Mar 21 Python
python 输入一个数n,求n个数求乘或求和的实例
Nov 13 Python
python保存二维数组到txt文件中的方法
Nov 15 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
python面试题之列表声明实例分析
Jul 08 Python
django 中QuerySet特性功能详解
Jul 25 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
python的pip有什么用
Jun 17 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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计算税后工资的方法
2015/07/28 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
js实现简单的验证码
2015/12/25 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python分析apache访问日志脚本分享
2015/02/26 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
实例介绍Python中整型
2019/02/11 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
Pytorch释放显存占用方式
2020/01/13 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
优秀团队获奖感言
2014/02/19 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
个人更名证明
2015/06/23 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
canvas 中如何实现物体的框选
2022/08/05 Javascript