1.python把一個unicode字符串寫入文件為什么會報錯?
write方法的參數類型是str,str是二進制流(不包含編碼信息),當你給出一個unicode對象時,會執行str函數轉換成str類型再送給write方法。unicode轉str包含一次編碼,如不指定則默認使用ascii編碼,而ascii編碼集里漢字字符是沒有對應的,所以報錯。
正確做法是在代碼里指定編碼。比如在open里指定(fp= open('test.txt', 'w', encoding='utf-8')),或者在write的時候手動把unicode對象通過encode方法指定編碼產生str。就是說寫成fp.write(s.encode('utf8'))。注意unicode對象用encode是有意義的,str對象在py2里允許你對str對象使用encode,然而這是對指定了default encoding的情況下才有效的,因此不推薦新手對str直接encode。
2.Error:UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\u200e’ in position 43: illegal multibyte sequence
原來出現’gbk’ codec can’t encode”的錯誤的根本原因是,對于前面的,不論是用
titleHtml.decode(“UTF-8”);
還是titleHtml.decode(“UTF-8”, ‘ignore’);
還是titleHtml.decode(“UTF-8”, ‘replace’);
都是可以得到正常的titleUni的Unicode字符的,然后對于此Unicode的字符,需要print出來的話,由于本地系統是Win7中的cmd,默認codepage是CP936,即GBK的編碼,所以需要先將上述的Unicode的titleUni先編碼為GBK,然后再在cmd中顯示出來,然后由于titleUni中包含一些GBK中無法顯示的字符,導致此時提示“’gbk’ codec can’t encode”的錯誤的。
對于此(類)問題:
(1)出現UnicodeEncodeError –> 說明是Unicode編碼時候的問題;
(2) ‘gbk’ codec can’t encode character –> 說明是將Unicode字符編碼為GBK時候出現的問題;
此時,往往大的可能就是,本身Unicode類型的字符中,包含了一些無法轉換為GBK編碼的一些字符。
解決辦法是:
方案1:
在對unicode字符編碼時,添加ignore參數,忽略無法無法編碼的字符,這樣就可以正常編碼為GBK了。
對應代碼為:
gbkTypeStr = unicodeTypeStr.encode(“GBK“, ‘ignore’);
方案2:
或者,將其轉換為GBK編碼的超集GB18030 (即,GBK是GB18030的子集):
gb18030TypeStr = unicodeTypeStr.encode(“GB18030“);
對應的得到的字符是GB18030的編碼。
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:python的字符轉換常見bug-創新互聯
鏈接URL:http://vcdvsql.cn/article2/ddjpoc.html
成都網站建設公司_創新互聯,為您提供定制開發、品牌網站制作、商城網站、服務器托管、建站公司、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯