国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

django項目運行因中文而亂碼報錯的幾種情況解決

2020-01-04 16:28:37
字體:
來源:轉載
供稿:網友

前言

django項目開發(fā)過程中,碰到了多種情況下的中文亂碼報錯,在這兒做一下處理總結。

報錯: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 sysreload(sys)sys.setdefaultencoding('utf-8')

3.項目配置在debian系統(tǒng)中,F(xiàn)ileField字段在admin中因中文文件名上傳報錯

在一個django項目中發(fā)現(xiàn),在本地windows測試環(huán)境中,django admin的文件上傳功能毫無障礙,可是當項目布置在debian環(huán)境中時,中文文件名的文件在admin中無法上傳,并且報中文亂碼的錯,該錯誤的主要原因來自系統(tǒng)編碼問題,該debian系統(tǒng)中未設置系統(tǒng)編碼語言,均為默認設置,導致所布置的項目無法正常運行,解決如下:

(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重啟服務器,查看系統(tǒng)編碼,UTF-8中文生效,locale命令可以直接查看系統(tǒng)編碼設置,此時再運行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對象處理發(fā)件人亂碼

     b、用Header對象處理主題亂碼

     c、用Message對象處理正文亂碼

     這里統(tǒng)一采用utf8編碼

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 肃北| 永丰县| 乐昌市| 视频| 娱乐| 仁化县| 柏乡县| 石棉县| 石家庄市| 盐城市| 漯河市| 黑河市| 偃师市| 铁岭县| 阜宁县| 志丹县| 宁远县| 河池市| 玉环县| 甘肃省| 宁阳县| 太保市| 海兴县| 沾化县| 湛江市| 富源县| 大洼县| 山西省| 房产| 天柱县| 邹平县| 延庆县| 当雄县| 施秉县| 合江县| 额济纳旗| 叶城县| 舒城县| 咸宁市| 北川| 无极县|