iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中对XML文件的编码转换问题
  • 626
分享到

Python中对XML文件的编码转换问题

PythonXML文件编码转换PythonXML转换 2023-03-21 11:03:02 626人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 在 python 中 XML 文件的编码问题2. 处理 Python XML 文件的思路3. 实际过程中遇到的问题4. 最后使用的代码1. 在 Python 中 XML 文

1. 在 Python 中 XML 文件的编码问题

1.Python 使用的xml.etree.ElementTree库只支持解析和生成标准的UTF-8格式的编码

2.常见GBKGB2312等中文编码的 XML 文件,用以在老旧系统中保证 XML 对中文字符的记录能力

3.XML 文件开头有标识头,标识头指定了程序处理 XML 时应该使用的编码

在这里插入图片描述

4.要修改编码,不仅要修改文件整体的编码,还要将标识头中 encoding 部分的值修改

2. 处理 Python XML 文件的思路

1.读取&解码:

  • 使用二进制模式读取 XML 文件,将文件变为二进制流
  • 将二进制流使用.encode()方法,使用原文件的编码格式进行解析为字符串

2.处理标识头:使用.replace()方法,替换字符串中的encoding="xxx"部分

3.编码&保存:将字符串使用新的编码格式进行保存

3. 实际过程中遇到的问题

  • GB2312 <–> UTF:无问题,可直接按照上面的逻辑处理
  • GBK <–> UTF8
    • GBK --> UTF8:无问题,可直接按照上面的逻辑处理
    • UTF8 --> GBK:.encode()会报错,要加上error="ignore"参数,忽略无法转换的字符
    • 这里的原理是:GBK 编码兼容 UTF-8 编码,因此无法转换的内容使用 GBK 直接也能显示
  • GBK <–> GB2312:无问题

4. 最后使用的代码

# 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, savefilepath1, 'GBK', 'utf-8')
# utf-8 --> gb2312
convert_xml_encoding(filepath, savefilepath1, 'utf-8', 'gb2312')
# GBK --> gb2312
convert_xml_encoding(filepath, savefilepath1, 'GBK', 'gb2312')

注意事项:

  • 由于这里需要直接替换标识头,要求编码名称一定得完全匹配,否则替换会失败
  • 如:GBK 不能写成 gbk,utf-8 不能写成 UTF8此代码仅在以上 GBK、GB2312、UTF-8 & 常用中英文基础上测试,其他的编码格式不保证一定能转换成功

到此这篇关于Python 中对 XML 文件的编码转换的文章就介绍到这了,更多相关Python XML 文件编码转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python中对XML文件的编码转换问题

本文链接: https://www.lsjlt.com/news/200674.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中对XML文件的编码转换问题
    目录1. 在 Python 中 XML 文件的编码问题2. 处理 Python XML 文件的思路3. 实际过程中遇到的问题4. 最后使用的代码1. 在 Python 中 XML 文...
    99+
    2023-03-21
    Python XML 文件编码转换 Python XML 转换
  • Python中怎么对XML文件的编码进行转换
    1. 在 Python 中 XML 文件的编码问题1.Python 使用的xml.etree.ElementTree库只支持解析和生成标准的UTF-8格式的编码2.常见GBK或GB2312等中文编码的 XML 文件,用以在老旧系统中保证 X...
    99+
    2023-05-21
    Python xml
  • 关于Python的文本文件转换编码问题
    目录前言 测试数据编码转换代码执行结果说明前言  因为编程的原因,经成会遇到字符编码的问题。如开发工具使用的是UTF-8编码(推荐使用),然后需要导入一个从其它地...
    99+
    2023-05-16
    Python文本文件 文件转换编码
  • Python的文本文件转换编码问题怎么解决
    这篇文章主要介绍“Python的文本文件转换编码问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python的文本文件转换编码问题怎么解决”文章能帮助大家解决问题。测试数据注:测试文本采用...
    99+
    2023-07-06
  • python中文转换url编码(转)
    今天修改一个天气预报的东西,但输入城市不能得到天气预报,感觉是编码不对,因为你输入一个城市(比如‘杭州’),url的地址编码却是'%E4%B8%BD%E6%B1%9F',因此需 要做一个转换。这里我们就用到了模块urllib。>>...
    99+
    2023-01-31
    中文 python url
  • 解决python将xml格式文件转换成txt文件的问题(xml.etree方法)
    概述 先来介绍一下xml格式的文件,从数据分析的角度去看xml格式的数据集,具有以下的优点开放性(能在任何平台上读取和处理数据,允许通过一些网络协议交换xml数据)、简单性(纯文本,...
    99+
    2024-04-02
  • python中的txt文件怎么转换为XML
    这篇文章主要介绍了python中的txt文件怎么转换为XML的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中的txt文件怎么转换为XML文章都会有所收获,下面我们一起来看看吧。txt文件转换为XML...
    99+
    2023-07-04
  • python中文转换url编码
            今天要处理百度贴吧的东西。想要做一个关键词的list,每次需要时,直接添加 到list里面就可以了。但是添加到list里面是中文的情况(比如‘丽江’),url的地址编码却是'%E4%B8%BD%E6%B1%9F',因此需 要...
    99+
    2023-01-31
    中文 python url
  • Python中文编码问题
        近日用Python写一个小程序,从数据库(MS SQL)中读取数据,对数据进行组织后发送到邮箱,在数据内容有中文的地方始终报错,汉字使用UTF-8进行编码倒是不报错了,但发送到邮箱的内容,从数据库中读取出来的汉字却成乱码了,经多方查...
    99+
    2023-01-31
    中文 Python
  • Python 转换文本编码
    前段时间入手了一个Sony PRS-505的阅读器,不过因为汉化的原因,折腾了很久,终于全部搞定了。麻烦的是505认得最好的编码方式为utf-8,如果是unicode,当文件大于5M时就容易出现问题。所以许多大的txt文档都要转换成utf-...
    99+
    2023-01-31
    文本 Python
  • linux中的文件编码怎么转换
    本篇内容主要讲解“linux中的文件编码怎么转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中的文件编码怎么转换”吧! ...
    99+
    2023-05-25
    linux
  • Python中文乱码问题(转)
    1、设置PyCharm工具的编码格式:File--》setting--》Editor--》FileEncodings--》IDE encoding:utf-8 2、在PyCharm模块文件的第二行加入语句:#-*-coding:utf-8...
    99+
    2023-01-31
    乱码 中文 Python
  • Python 编码转换与中文处理
    Python 编码转换与中文处理python 中的 unicode是让人很困惑、比较难以理解的问题. utf-8是unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.decode是将普通字符串按照参数中的编码格式...
    99+
    2023-01-31
    中文 Python
  • python中文编码乱码问题的解决
    目录前言:一、什么是字符编码。1.ASCII2.GB23123.Unicode4.UTF-8二、Python2中的字符编码三、decode()与encode()方法四、一个字符编码的...
    99+
    2024-04-02
  • Node.js中怎么转换文件编码的格式
    今天就跟大家聊聊有关Node.js中怎么转换文件编码的格式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目很多 lua 文件不是 utf-8格式,...
    99+
    2024-04-02
  • Python中的编码问题
    视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html对于Python的初学者来说,编码问题相当令人头疼。本文就根据我在学习过程中遇到的问题简单谈一下Python中的编...
    99+
    2023-01-31
    Python
  • Linux下文件编码如何转换
    这篇文章主要介绍了Linux下文件编码如何转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux下文件编码如何转换文章都会有所收获,下面我们一起来看看吧。这是由于Windows中默认的文件格式是GBK(g...
    99+
    2023-06-27
  • PHP16进制转换中文乱码问题解析
    PHP作为一种强大的服务器端脚本语言,常常用来处理各种数据转换。在实际开发中,经常会遇到将16进制编码转换为中文字符的需求。然而,有时候在这个过程中会出现中文乱码的问题,导致转换结果不...
    99+
    2024-03-04
    php 问题 转换
  • 如何讲解Python对象转换问题
    如何讲解Python对象转换问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python对象的大多数格式与C用法相同,要求要输出的值的类型符合格式的需要,你可以把你的部分程序...
    99+
    2023-06-17
  • Java Unicode和中文编码转换
            今天在开发项目的时候,第三方提供的接口返回的数据是经过Unicode编码的,我们使用的时候多有不便,所以经过代码将Unicode解码才能使用,故记录一下使用Java进行Unicode和中文的互转。通常我们在安全优先级不是特...
    99+
    2023-09-02
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作