ホームページ >バックエンド開発 >Python チュートリアル >Pythonを使ってテキストファイルのエンコード形式を一括変更する方法
テキストファイルのエンコード形式を一括でascii、gb2312、utf8などに変換し、相互変換します。 utf8>gb2312>ascii という文字セットなので、gb2312 を utf8 に変換すると文字化けしやすくなります。
gb2312 と utf-8 の主な違い:
フォント サイズについて : UTF-8 > gb2312 (utf8 にはすべての文字が含まれ、gb2312 には中国語の文字のみが含まれます) )
保存サイズについて: UTF-8>gb2312 (utf8 はより肥大化して読み込みが遅く、gb2312 は小さくて読み込みが高速です)
の範囲についてapplication: gb2312 は主に中国本土で使用されています。ローカライズされた文字セットです。UTF-8 には、世界中のすべての国で必要な文字が含まれています。国際的なエンコードであり、高い汎用性があります。 UTF-8 でエンコードされたテキストは、UTF8 文字セットをサポートするさまざまな国のブラウザで表示できます。
import sys import chardet import codecs def get_encoding_type(fileName): '''print the encoding format of a txt file ''' with open(fileName, 'rb') as f: data = f.read() encoding_type = chardet.detect(data) #print(encoding_type) return encoding_type # such as {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'} def convert_encoding_type(filename_in, filename_out, encode_in="gb2312", encode_out="utf-8"): '''convert encoding format of txt file ''' #filename_in = 'flash.c' #filename_out = 'flash_gb2312.c' #encode_in = 'utf-8' # 输入文件的编码类型 #encode_out = 'gb2312'# 输出文件的编码类型 with codecs.open(filename=filename_in, mode='r', encoding=encode_in) as fi: data = fi.read() with open(filename_out, mode='w', encoding=encode_out) as fo: fo.write(data) fo.close() # with open(filename_out, 'rb') as f: # data = f.read() # print(chardet.detect(data)) if __name__=="__main__": # fileName = argv[1] # get_encoding_type(fileName) # convert_encoding_type(fileName, fileName) filename_of_files = sys.argv[1] #the file contain full file path at each line with open(filename_of_files, 'rb') as f: lines = f.readlines() for line in lines: fileName = line[:-1] encoding_type = get_encoding_type(fileName) if encoding_type['encoding']=='GB2312': print(encoding_type) convert_encoding_type(fileName, fileName) print(fileName)
python はファイルの utf-8 形式へのバッチ変換を実装します
xml_path = './' with open(xml_path , 'rb+') as f: content = f.read() codeType = detect(content)['encoding'] content = content.decode(codeType, "ignore").encode("utf8") fp.seek(0) fp.write(content)
以上がPythonを使ってテキストファイルのエンコード形式を一括変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。