python

今天寫pytho腳本時(shí)遇到幾個(gè)基礎(chǔ)問題,在此記錄下
1 中文字符輸出
一個(gè)print打印中 含有英文和中文字符,因?yàn)橹形木幋a問題,print報(bào)錯(cuò) ascii code cant decode byte 0xef in position 0

python字符串分byte str 和unicode str兩種,指定編碼方式為UTF8,則所有中文字符串都認(rèn)為是byte str 而函數(shù)中產(chǎn)生字符串是unicode str 兩者混合輸出時(shí)就會(huì)導(dǎo)致中文字符問題

有兩個(gè)解決方案
1)將字符串轉(zhuǎn)成byte str
(“你好"+self.request.get(“argu”).encode(“utf-8”))
2)將字符串轉(zhuǎn)成unicode str
(u“你好"十self.request.get(“argu"))

腳本輸出本地英文字符 十 mysql 獲取中文字符(mysql字符集是utf8) OK
本地中文十mysqL結(jié)果 產(chǎn)生報(bào)錯(cuò)
解決方式參照上面2)

自己模仿本地中文十自定義函數(shù)返回字符 也沒有編碼問題,難道是接口函數(shù)才有這問題?

附錄:
decode encode
str ---------> str(Unicode) ---------> str

u = '中文' # 指定字符串類型對(duì)象u
str1 = u.encode('gb2312') # 以gb2312編碼對(duì)u進(jìn)行編碼,獲得bytes類型對(duì)象
print(str1)
b'\xd6\xd0\xce\xc4'
str2 = u.encode('gbk') # 以gbk編碼對(duì)u進(jìn)行編碼,獲得bytes類型對(duì)象
print(str2)
b'\xd6\xd0\xce\xc4'
str3 = u.encode('utf-8') # 以u(píng)tf-8編碼對(duì)u進(jìn)行編碼,獲得bytes類型對(duì)象
print(str3)
b'\xe4\xb8\xad\xe6\x96\x87'
u1 = str1.decode('gb2312') # 以gb2312編碼對(duì)字符串str進(jìn)行解碼,獲得字符串類型對(duì)象
print('u1')
'中文'
u2 = str1.decode('utf-8') # 報(bào)錯(cuò),因?yàn)閟tr1是gb2312編碼的
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

2 換行問題
print 后 帶 , 不會(huì)自動(dòng)換行

3 in匹配
opt in ('proxyaa','proxyb') #全字符串匹配
opt in('proxyaa') #子串匹配
if opt == proxy 會(huì)匹配到opt in('proxyaa') 子串

最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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