UnicodeDecodeError 不明覺厲

2021-06-10 06:42:00 字數 997 閱讀 4568

好吧,這個錯誤困擾了我一整天。

使用 mysql 資料庫的時候,鏈結的時候 ,沒有宣告  charset='utf8'

所以在html試圖向後台post中文字元的時候,報錯了,說  'latin-1'  codec can't encode byte in position  : 

"unicodedecodeerror: 'ascii' codec can't decode byte  in position : ordinal not in range(128)"

當時真的太不冷靜,都沒有仔細去思考這個問題,馬上就開始亂谷歌,結果可想而知。

乙個問題,如果你不是有至少2分了解,就算你找到教程照著做解決了,下次你還是會碰壁。

我絕望了,嘗試向sae的管理員po了乙個建議(建議它改decoder,我也真是好傻)

就在我絕望的時候,我看到了這篇東西 

然後想了一下,修復之。現在ok了。

修改.py檔案裡的預設編碼

import sys

reload(sys)

sys.setdefaultencoding('utf8')

至此問題算是告一段落。

以下是總結時間。

想想整個流程,python從資料庫select資料,用render的方法提取html模板,渲染之,然後display給使用者,使用者post資料到後台,後台再處理,放進資料庫。

q:第一次錯因?

a:後台把post上來的資料(中文字 )存進了資料庫,資料庫預設 latin-1 編碼 ,發現 encode不了乙個中文字元 ,報錯

q:第二次錯因?

a:改了mysql的預設字符集之後,python從資料庫中提取出來的字元編碼變成 'utf-8『的了,而python預設的編碼是 ascii ,報錯

最後改了python的預設編碼為utf-8 就可以了。

以上是我的猜想。

PTA 愛丁頓數(不明覺厲)

英國天文學家愛丁頓很喜歡騎車。據說他為了炫耀自己的騎車功力,還定義了乙個 愛丁頓數 e 即滿足有 e 天騎車超過 e 英里的最大整數 e。據說愛丁頓自己的 e 等於87。現給定某人 n 天的騎車距離,請你算出對應的愛丁頓數 e n 輸入格式 輸入第一行給出乙個正整數 n 10 5 即連續騎車的天數 ...

C 中extern 「C」含義深層探索 不明覺厲

1.引言 c 語言的建立初衷是 a better c 但是這並不意味著c 中類似c語言的全域性變數和函式所採用的編譯和連線方式與c語言完全相同。作為一種欲與c相容的語言,c 保留了一部分過程式語言的特點 被世人稱為 不徹底地物件導向 因而它可以定義不屬於任何類的全域性變數和函式。但是,c 畢竟是一種...

point 出處不明

題目大意 給你n個點,m個操作,每個操作有兩個引數k,a把所有滿足y k x a 的點刪掉,當然每個點只能被刪一次,要求輸出每個點時被哪個操作刪的,如果最後仍沒被刪就 1 保證所有的數都是正數 x,y,k,a都是實數,不超過10 6 這題因為是y k x a 比較蛋疼,所以把其化成alnx lny ...