Pyhotn 中編碼的問題:'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)的錯(cuò)誤

在Django視圖函數(shù)中經(jīng)常出現(xiàn)類似于'ascii' codec can't decode byte 0xef in position 0:ordinal not in range(128)的錯(cuò)誤。

? ? ? ? 在解決錯(cuò)誤之前,首先要了解unicode和utf-8的區(qū)別。

??????? unicode指的是萬國(guó)碼,是一種“字碼表”。而utf-8是這種字碼表儲(chǔ)存的編碼方法。unicode不一定要由utf-8這種方式編成bytecode儲(chǔ)存,也可以使用utf-16,utf-7等其他方式。目前大多都以u(píng)tf-8的方式來變成bytecode。

其次,Python中字符串類型分為byte string 和 unicode string兩種。

如果在python文件中指定編碼方式為utf-8(#coding=utf-8),那么所有帶中文的字符串都會(huì)被認(rèn)為是utf-8編碼的byte string(例如:mystr="你好"),但是在函數(shù)中所產(chǎn)生的字符串則被認(rèn)為是unicode string。

問題就出在這邊,unicode string 和 byte string 是不可以混合使用的,一旦混合使用了,就會(huì)產(chǎn)生這樣的錯(cuò)誤。

簡(jiǎn)單的做法就是把字符串轉(zhuǎn)為utf-8: u"xxxxxx"

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容