django项目开发过程当中,碰到了多种状况下的中文乱码报错,在这儿作一下处理总结。
报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position x-x: ordinal not in range(128)
数据库
django项目的.py文件文件中加入了中文注释,常常会所以报错而致使没法运行,究其缘由是编码的问题,最后的解决办法是直接在有中文注释的.py文件的顶部加上:django
# -*-coding:utf-8 -*-
首先确保链接的数据库的基础设置是utf-8:windows
而后确认django项目中的网页头部设置编码为utf-8,网页头部加上代码:bash
<meta charset="utf-8">
最后仍然报错就是由于django项目中咱们没有指明编码方式,因此按照默认设置来,而非正常的utf-8,为:服务器
因此项目最后须要在进行编码操做的地方,或者直接在settings.py中加入:测试
import sys reload(sys) sys.setdefaultencoding('utf-8')
在一个django项目中发现,在本地windows测试环境中,django admin的文件上传功能毫无障碍,但是当项目布置在debian环境中时,中文文件名的文件在admin中没法上传,而且报中文乱码的错,该错误的主要缘由来自系统编码问题,该debian系统中未设置系统编码语言,均为默认设置,致使所布置的项目没法正常运行,解决以下:
(1).终端中操做安装locales编码
apt-get install locales
(2).从新选择字符编码spa
dpkg-reconfigure locales
(3).空格选择全部zh_开头的字符编码,OK确认下一步,选择中文UTF-8code
(4).debian里须要在~/.bashrc里面最下面加入export LC_ALL=zh_CN.UTF-8
或者直接运行export LANG=zh_CN.UTF-8
(5).最后直接reboot重启服务器,查看系统编码,UTF-8中文生效,locale命令能够直接查看系统编码设置,此时再运行django项目上传中文名文件无误。ip