首頁  >  文章  >  後端開發  >  Python2操作中文名文件亂碼的問題解決方法

Python2操作中文名文件亂碼的問題解決方法

高洛峰
高洛峰原創
2017-03-24 17:04:301469瀏覽

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


Python2操作中文名文件亂碼的問題解決方法

#查看Python文件會發現:

#open(filename, 'w')這個方法中,filename這個參數必須是Unicode編碼的參數。

我之前加上#-*-coding:utf-8-*-將編碼設定為utf-8,當呼叫這個方法往裡傳參數時,需要將這個變數filename解碼成Unicode。

例如filename='中文.txt',使用open()時,這樣寫open(filename.decode('utf-8'), 'w'),這樣建立的中文檔案名稱就沒有亂碼問題了。


以上是Python2操作中文名文件亂碼的問題解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn