圖解Python語言說明介紹
Python語言這同時說明IDLE的Shell支持兩種格式的中文字符串:GBK編碼的“str”對象,和UNICODE編碼的unicode對象,我連接的時候也用的是UTF-8,為什么查詢得到的文本內容卻是UNICODE編碼(unicode對象)?這是MySQLdb庫的設置么?
在window下面用記事本編輯文件的時候,如果保存為UNICODE或UTF-8,分別會在文件的開頭加上兩個字節“\xFF\xFE”和三個字節“\xEF\xBB\xBF”。在讀取的時候就可能會遇到問題,但是不同的環境對這幾個多于字符的處理也不一樣。
打開utf-8格式的文件并讀取utf-8字符串后,解碼變成unicode對象。但是會把附加的三個字符同樣進行轉換,變成一個unicode字符,字符的數據值為“\xFF\xFE”。這個字符不能被打印。編碼的時候需要跳過這個字符。
打開unicode格式的文件后,得到的字符串正確。這時候適用utf-16解碼,能得到正確的unicdoe對象,可以直接使用。多余的那個填充字符在進行轉換時會被過濾掉。
開ansi格式的文件后,沒有填充字符,可以直接使用,結論:讀寫使用python生成的文件沒有任何問題,但是在處理由notepad生成的文本文件時,如果該文件可能是非ansi編碼,需要考慮如何處理填充字符。
剛剛接觸Python語言,我用的數據庫是mysql。在執行插入、查找等操作時,如果運行環境使用的字符編碼和mysql不一致,就可能導致運行時的錯誤。當然,和上面看到的情況一樣。
運行環境并不是關鍵因素,關鍵是查詢語句的編碼方式。如果在每次執行查詢操作時都把查詢字符串做一次編碼轉換,轉變成mysql的默認字符編碼,一樣不會遇到問題。但是這樣寫代碼也太痛苦了吧。
相面是兩種方法的用法比較:
另外,在Python語言的shell中,不要用 u’中文’ 對屬性進行賦值。上面討論過,這樣得到的unicode字符串不正確。
【編輯推薦】