Maison > Article > développement back-end > Comment convertir l'encodage des fichiers XML en Python
1. La bibliothèque xml.etree.ElementTree
utilisée par Python prend uniquement en charge l'analyse et la génération d'encodage au format UTF-8 standardxml.etree.ElementTree
库只支持解析和生成标准的UTF-8格式的编码
2.常见GBK
或GB2312
等中文编码的 XML 文件,用以在老旧系统中保证 XML 对中文字符的记录能力
3.XML 文件开头有标识头,标识头指定了程序处理 XML 时应该使用的编码
4.要修改编码,不仅要修改文件整体的编码,还要将标识头中 encoding 部分的值修改
1.读取&解码:
使用二进制模式读取 XML 文件,将文件变为二进制流
将二进制流使用.encode()
方法,使用原文件的编码格式进行解析为字符串
2.处理标识头:使用.replace()
方法,替换字符串中的encoding="xxx"
GB2312
et d'autres fichiers XML codés en chinois sont utilisés pour garantir la capacité de XML à enregistrer des caractères chinois dans les anciens systèmes3. Il y a un en-tête au début du XML. L'en-tête spécifie l'encodage que le programme doit utiliser lors du traitement de XML
2. Idées pour traiter les fichiers XML Python
.replace()
. pour remplacer la partie encoding="xxx"
dans la chaîne3. Encodage et sauvegarde : Enregistrez la chaîne en utilisant le nouveau format d'encodage
GBK < ;–> : pas de problème
# 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')🎜Remarques :🎜🎜🎜🎜Étant donné que l'en-tête du logo doit être remplacé directement ici, le nom d'encodage doit correspondre complètement, sinon le remplacement échouera🎜 🎜🎜🎜Par exemple : GBK ne peut pas être écrit comme gbk, utf-8 ne peut pas être écrit en UTF8. Ce code est uniquement testé sur la base des formats GBK, GB2312, UTF-8 ci-dessus et du chinois et de l'anglais couramment utilisés. Il n'est pas garanti que la conversion soit réussie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!