python中的編碼問題及讀寫中文(codecs模塊、文件讀寫)

問題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編碼轉換成目標編碼格式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章