Python2預設是不支援中文的,一般我們在程式的開頭加上#-*-coding:utf-8-*-來解決這個問題,但在我用open()方法開啟檔案時,中文名字卻顯示成了亂碼。
我先給大家說說Python中的編碼問題,Python中的字串的大概分為為str和Unicode兩種形式,其中str常用的編碼類型為utf-8,gb2312,gbk等等,Python使用Unicode作為編碼的基礎類型。 str記錄的是位元組數組,只是某種編碼的儲存格式,終於輸出到檔案或列印出來是什麼格式,完全取決於其解碼的編碼將他解碼成什麼樣子;Unicode是一種類似於符號集的抽象編碼,它只規定了符號的二進位代碼,卻沒有規定這個二進位代碼該如何存儲,也就是它只是一種內部表示,不能直接保存,所以存儲時需要規定一種存儲形式,比如utf-8等。
Python中有編碼轉換的函數有:
decode(char_set) 實作char_set解碼成Unicodeencode(char_set) 實作Unicode編碼成char_set
#查看Python文件會發現:
#open(filename, 'w')這個方法中,filename這個參數必須是Unicode編碼的參數。
我之前加上#-*-coding:utf-8-*-將編碼設定為utf-8,當呼叫這個方法往裡傳參數時,需要將這個變數filename解碼成Unicode。
例如filename='中文.txt',使用open()時,這樣寫open(filename.decode('utf-8'), 'w'),這樣建立的中文檔案名稱就沒有亂碼問題了。
以上是Python2操作中文名文件亂碼的問題解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!