首先import os,sys
import os,sys 11定義乙個函式
def convert( filename, in_enc = "utf8", out_enc="gbk" ):`11第乙個引數是需要裝換的檔名,第二個是原始檔的原編碼,第三個是需要轉為目標編碼。第二個、第三個引數都有預設值。
def convert( filename, in_enc = "utf8", out_enc="gbk" ): try: print "convert " + filename, #讀取檔案內容 content = open(filename).read() #將原檔案內容進行編碼得到新檔案內容 new_content = content.decode(in_enc).encode(out_enc) #開啟檔案將新檔案內容寫進去 open(filename, 'w').write(new_content) print " done" except: print " error"123456789101112123456789101112以上這個方法針對的檔名,但如果只輸入了目錄,又要查詢目錄下的所有檔案,所以就再定義乙個方法。
def explore(dir): #遍歷目錄的所有檔案 並將根目錄 存在變數root中,目錄名存於dirs中,檔名存於files中 for root, dirs, files in os.walk(dir): #再次遍歷所有檔名files for file in files: #將檔名與根目錄進行拼接 形成絕對路徑 path = os.path.join(root, file) #呼叫上面編碼轉換函式 convert(path)123456789123456789最後在main函式中判斷是否輸入的是檔名還是目錄
def main():#獲取命令列的第乙個引數 for path in sys.ar**[1:]: #如果是檔案 則呼叫單個檔案編碼轉換 if os.path.isfile(path): convert(path) #否則就呼叫 explore方法 elif os.path.isdir(path): explore(path)123456789123456789完整原始碼如下:
import os,sys def convert( filename, in_enc = "utf8", out_enc="gbk" ): try: print "convert " + filename, content = open(filename).read() new_content = content.decode(in_enc).encode(out_enc) open(filename, 'w').write(new_content) print " done" except: print " error" def explore(dir): for root, dirs, files in os.walk(dir): for file in files: path = os.path.join(root, file) convert(path) def main(): for path in sys.ar**[1:]: if os.path.isfile(path): convert(path) elif os.path.isdir(path): explore(path) if __name__ == "__main__": main()
Linux使用iconv進行編碼轉換
最近在做專案,為了能讓ui顯示中文,需要對中文進行編碼轉換。因為我用的是directfb,它只支援utf 8格式,所以要將gb2312轉換為utf 8,這時使用iconv是非常方便的。以下是我在專案中用到的一部分 首先要使用iconv的api需要包含它的標頭檔案 include iconv.h 或者...
Python 編碼轉換
coding utf 8 s abc print type s str utf 8 print len s 3 s unicode s str unicode,其中str的每個字元值必須小於128 print type s unicode print len s 3 s u abc print ty...
python編碼轉換
參見 主要介紹了python的編碼機制,unicode,utf 8,utf 16,gbk,gb2312,iso 8859 1 等編碼之間的轉換。常見的編碼轉換分為以下幾種情況 1.自動識別字串編碼 coding utf8 import urllib import chardet rawdata ur...