ホームページ >バックエンド開発 >Python チュートリアル >Python で XML ファイルのエンコーディングを変換する方法
1. Python で使用される xml.etree.ElementTree
ライブラリは、標準の UTF-8 形式エンコーディングの解析と生成のみをサポートします
2. GBK
や GB2312
などの一般的な中国語でエンコードされた XML ファイルは、XML が古いシステムで中国語の文字を記録できるようにするために使用されます
3 . XML ファイルの先頭にヘッダーがあります。ヘッダーは、プログラムが XML を処理するときに使用するエンコーディングを指定します。
4. エンコーディングを変更するには、変更する必要があります。ファイル全体のエンコードのみを変更する必要があり、識別ヘッダーのエンコード部分の値も変更する必要があります。2. Python XML ファイルを処理するためのアイデア1. 読み取りとデコード:#.encode()# を使用します。 ## バイナリ ストリームを元のファイルのエンコード形式に変換するメソッド 文字列
2 に解析されます。識別ヘッダーを処理します: .replace()## を使用します。 # 文字列 #Part
内の
encoding="xxx"## を置き換えるメソッドです。3. エンコードと保存: 新しいエンコード形式を使用して文字列を保存します。
3. で発生した問題実際のプロセス
UTF8 --> GBK: .encode() はエラーを報告します。変換できない文字を無視するには、error="ignore" パラメータを使用します。
ここでの原則は次のとおりです: GBK エンコードは UTF-8 エンコードと互換性があるため、変換できないコンテンツは GBK
##GBK GB2312 を使用して直接表示できます。問題ありません。
# filepath -- 原文件路径 # savefilepath -- 转换后文件存储路径(默认 = 原文件路径) # oldencoding -- 原文件的编码格式 # newencoding -- 转换后文件的编码格式 def convert_xml_encoding(filepath, savefilepath=filepath, oldencoding, newencoding): # Read the XML file with open(filepath, 'rb') as file: content = file.read() # Decode the content from old encoding # 出现错误时忽略 errors='ignore' decoded_content = content.decode(oldencoding, errors='ignore') # decoded_content = content.decode('GBK') # Update the encoding in the XML header updated_content = decoded_content.replace('encoding="{}"'.format(oldencoding), 'encoding="{}"'.format(newencoding)) # Encode the content to new encoding # 出现错误时忽略 errors='ignore' encoded_content = updated_content.encode(newencoding,errors='ignore') # Write the updated content to the file with open(savefilepath, 'wb') as file: file.write(encoded_content) # Result output print(f"XML file '{os.path.basename(filepath)}'({oldencoding}) --> '{os.path.basename(savefilepath)}'({newencoding})") # ---------------------- 使用示例 --------------------- # GBK --> utf-8 convert_xml_encoding(filepath, savefilepath2, 'GBK', 'utf-8') # utf-8 --> gb2312 convert_xml_encoding(filepath, savefilepath2, 'utf-8', 'gb2312') # GBK --> gb2312 convert_xml_encoding(filepath, savefilepath2, 'GBK', 'gb2312')注:
以上がPython で XML ファイルのエンコーディングを変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。