1.Python 使用的xml.etree.ElementTree
函式庫只支援解析與產生標準的UTF-8格式的編碼
2.常見GBK
或GB2312
等中文編碼的XML 文件,用以在老舊系統中保證XML 對中文字元的記錄能力
#3.XML 檔案開頭有標識頭,標識頭指定了程式處理XML 時應該使用的編碼
4.要修改編碼,不僅要修改檔案整體的編碼,也要將標識頭中encoding 部分的值修改
1.讀取&解碼:
使用二進位模式讀取XML 文件,將文件變為二進位流
將二進位流使用.encode()
方法,使用原始文件的編碼格式進行解析為字串
2.處理識別頭:使用.replace()
方法,取代字串中的encoding="xxx"## #部分
# 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中文網其他相關文章!