Python中通過open()操作文件時的文件中文名亂碼問題


  最近在用Python進行文件操作的時候,遇到創建中文文件名的亂碼問題。

  Python默認是不支持中文的,一般我們在程序的開頭加上#-*-coding:utf-8-*-來解決這個問題,但是在我用open()方法打開文件時,中文名字卻顯示成了亂碼。

  我先給大家說說Python中的編碼問題,Python中的字符串的大概分為為str和Unicode兩種形式,其中str常用的編碼類型為utf-8,gb2312,gbk等等,Python使用Unicode作為編碼的基礎類型。str記錄的是字節數組,只是某種編碼的存儲格式,終於輸出到文件或是打印出來是什么格式,完全取決於其解碼的編碼將他解碼成什么樣子;Unicode是一種類似於符號集的抽象編碼,它只規定了符號的二進制代碼,卻沒有規定這個二進制代碼該如何存儲,也就是它只是一種內部表示,不能直接保存,所以存儲時需要規定一種存儲形式,比如utf-8等。

  Python中有編碼轉換的函數,decode(char_set)可以實現其他編碼到Unicode的轉換,encode(char_set)實現Unicode到其他編碼的轉換。

  查看Python文檔會發現:

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

  我之前加上#-*-coding:utf-8-*-將編碼設置為utf-8,當調用這個方法往里傳參數時,需要將這個變量編碼轉換為Unicode,比如name='中國',使用open()時,這樣寫open(name.decode('utf-8'), 'w'),這樣創建的中文文件名就沒有亂碼問題了,問題解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM