真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python的字符轉(zhuǎn)換常見(jiàn)bug

1.python把一個(gè)unicode字符串寫(xiě)入文件為什么會(huì)報(bào)錯(cuò)?

專(zhuān)注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)樅陽(yáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

write方法的參數(shù)類(lèi)型是str,str是二進(jìn)制流(不包含編碼信息),當(dāng)你給出一個(gè)unicode對(duì)象時(shí),會(huì)執(zhí)行str函數(shù)轉(zhuǎn)換成str類(lèi)型再送給write方法。unicode轉(zhuǎn)str包含一次編碼,如不指定則默認(rèn)使用ascii編碼,而ascii編碼集里漢字字符是沒(méi)有對(duì)應(yīng)的,所以報(bào)錯(cuò)。

正確做法是在代碼里指定編碼。比如在open里指定(fp= open('test.txt', 'w', encoding='utf-8')),或者在write的時(shí)候手動(dòng)把unicode對(duì)象通過(guò)encode方法指定編碼產(chǎn)生str。就是說(shuō)寫(xiě)成fp.write(s.encode('utf8'))。注意unicode對(duì)象用encode是有意義的,str對(duì)象在py2里允許你對(duì)str對(duì)象使用encode,然而這是對(duì)指定了default encoding的情況下才有效的,因此不推薦新手對(duì)str直接encode。

2.Error:UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multibyte sequence

原來(lái)出現(xiàn)’gbk’ codec can’t encode”的錯(cuò)誤的根本原因是,對(duì)于前面的,不論是用

titleHtml.decode(“UTF-8”);

還是titleHtml.decode(“UTF-8”, ‘ignore’);

還是titleHtml.decode(“UTF-8”, ‘replace’);

都是可以得到正常的titleUni的Unicode字符的,然后對(duì)于此Unicode的字符,需要print出來(lái)的話(huà),由于本地系統(tǒng)是Win7中的cmd,默認(rèn)codepage是CP936,即GBK的編碼,所以需要先將上述的Unicode的titleUni先編碼為GBK,然后再在cmd中顯示出來(lái),然后由于titleUni中包含一些GBK中無(wú)法顯示的字符,導(dǎo)致此時(shí)提示“’gbk’ codec can’t encode”的錯(cuò)誤的。


對(duì)于此(類(lèi))問(wèn)題:

(1)出現(xiàn)UnicodeEncodeError –> 說(shuō)明是Unicode編碼時(shí)候的問(wèn)題;

(2) ‘gbk’ codec can’t encode character –> 說(shuō)明是將Unicode字符編碼為GBK時(shí)候出現(xiàn)的問(wèn)題;

此時(shí),往往最大的可能就是,本身Unicode類(lèi)型的字符中,包含了一些無(wú)法轉(zhuǎn)換為GBK編碼的一些字符。


解決辦法是:

方案1:

在對(duì)unicode字符編碼時(shí),添加ignore參數(shù),忽略無(wú)法無(wú)法編碼的字符,這樣就可以正常編碼為GBK了。

對(duì)應(yīng)代碼為:

gbkTypeStr = unicodeTypeStr.encode(“GBK“, ‘ignore’);


方案2:

或者,將其轉(zhuǎn)換為GBK編碼的超集GB18030 (即,GBK是GB18030的子集):

gb18030TypeStr = unicodeTypeStr.encode(“GB18030“);

對(duì)應(yīng)的得到的字符是GB18030的編碼。


當(dāng)前標(biāo)題:python的字符轉(zhuǎn)換常見(jiàn)bug
瀏覽路徑:http://weahome.cn/article/ghehhd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部