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