問題1:
之前一直使用python自帶的open()函數讀寫文件沒什麼問題,最近項目需求需要操作文件讀寫中文,遇到了編碼問題。
解決思路:codecs模塊用於各種編碼之間的轉換,在打開文件時指定編碼格式即可。
向文件中寫入中文:
f = codecs.open('filename', 'w', 'utf-8')
f.write('中文')
f.close()
問題2:
列表中包含中文時打印輸出顯示不對。
先看以下代碼:
a_list = list()
a_list.append('中文')
print(a_list)
# 輸出結果:['\xe4\xb8\xad\xe6\x96\x87']
那麼如何在打印列表時顯示中文呢?解決方法如下:
a_list = list()
a_list.append(u'中文')
print(str(a_list).decode('unicode-escape'))
# 輸出結果:[u'中文']
思路是:通過字符串化處理,將list轉化爲str(utf-8)文本編碼的方式,同時要保留list裏面的unicode,避免通過字符處理導致的轉義操作,破壞掉中文的unicode,因此選擇了unicode-escape
總結:
python中內部編碼格式爲unicode, 如果想進行編碼格式的轉換,首先需要把原編碼格式轉換成python內部unicode編碼中間格式,再將unicode編碼轉換成目標編碼格式。