django項目運行因中文而出現的亂碼報錯解決總結

django項目開發過程當中,碰到了多種狀況下的中文亂碼報錯,在這兒作一下處理總結。
報錯:UnicodeEncodeError: 'ascii' codec can't encode characters in position x-x: ordinal not in range(128)數據庫

1.因代碼中的中文註釋問題的報錯

django項目的.py文件文件中加入了中文註釋,常常會所以報錯而致使沒法運行,究其緣由是編碼的問題,最後的解決辦法是直接在有中文註釋的.py文件的頂部加上:django

# -*-coding:utf-8 -*-

2.運行過程當中的中文亂碼的報錯

首先確保鏈接的數據庫的基礎設置是utf-8:windows

clipboard.png

而後確認django項目中的網頁頭部設置編碼爲utf-8,網頁頭部加上代碼:bash

<meta charset="utf-8">

最後仍然報錯就是由於django項目中咱們沒有指明編碼方式,因此按照默認設置來,而非正常的utf-8,爲:服務器

clipboard.png

因此項目最後須要在進行編碼操做的地方,或者直接在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).從新選擇字符編碼spa

dpkg-reconfigure locales

(3).空格選擇全部zh_開頭的字符編碼,OK確認下一步,選擇中文UTF-8code

clipboard.png

clipboard.png

clipboard.png

(4).debian裏須要在~/.bashrc裏面最下面加入export LC_ALL=zh_CN.UTF-8或者直接運行export LANG=zh_CN.UTF-8
(5).最後直接reboot重啓服務器,查看系統編碼,UTF-8中文生效,locale命令能夠直接查看系統編碼設置,此時再運行django項目上傳中文名文件無誤。ip

相關文章
相關標籤/搜索