最近所做的項目中涉及到很多用Python處理文檔的問題,被其中的編碼問題弄得十分頭大。個人做了一些研究,在此記錄一下。
關於各種字符編碼在此不贅述,可以參看廖雪峯:字符串與編碼
1、中文字符串報錯
- str = "哈哈"
- print str
- #運行結果報錯:SyntaxError: Non-ASCII character '\xe5'
- # -*- coding: UTF-8 -*-
- str = "哈哈"
- print str#哈哈
- # -*- coding: utf-8 -*-
- str = u'哈'
- print str #輸出str的unicode碼顯示哈
- print repr(str) #輸出str的unicode碼:u'\u54c8'
- u = str.encode('utf8')#將str由unicode編碼成utf8
- print u #輸出str的utf8碼顯示:哈
- print repr(u) #輸出str的utf8編碼:'\xe5\x93\x88'
- #將str用其他編碼方式進行編碼
- s = u.decode('utf8').encode('gbk')
- print s #輸出str的gbk碼顯示:��
- print repr(s) #輸出str的gbk編碼:'\xb9\xfe'
- list = ['昨天','今天','明天']
- print list #['\xe6\x98\xa8\xe5\xa4\xa9', '\xe4\xbb\x8a\xe5\xa4\xa9', '\xe6\x98\x8e\xe5\xa4\xa9']
- print '[' + ','.join("'""'" + x +"'" for x in list) + ']' #['昨天','今天','明天']