为了简化问题,就把xml的内容简化为如下的形式:

<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是任性]]></da></DOCUMENT>

它的encoding为gbk,其中的节点有一个为中文字符
使用lxml提取节点的值时出现了如下的异常

lxml.etree.XMLSyntaxError: Extra content at the end of the document

此时对应的Python脚本为:

tst = u'<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是任性]]></da></DOCUMENT>'
for event,element in etree.iterparse(BytesIO(tst.encode('utf-8'))):print("%s, %s" % (element.tag, element.text))

不过简化之前,报的是另外一个异常

lxml.etree.XMLSyntaxError: input conversion failed due to input error, bytes 0x8B 0x2C 0xE6 0x9D

不论异常是哪一个,猜测还是和字符的编码形式有关。
经过各种尝试无果,后来在stackoverflow上看到这篇文章,文中提到的问题和xml中的encoding值有关,尝试了增加了一段代码

tst = u'<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是任性]]></da></DOCUMENT>'
tst = tst.replace('encoding="gbk"', 'encoding="utf-8"')
for event,element in etree.iterparse(BytesIO(tst.encode('utf-8'))):print("%s, %s" % (element.tag, element.text))

增加了一个替换的语句,将之前的encoding="gbk"替换成encoding:"utf-8"
于是终于得到了结果:

da, 中文,就是任性
DOCUMENT, None

lxml处理xml时的字符编码问题相关推荐

  1. Eclipse保存文件时出现字符编码错误

    Eclipse保存文件时出现字符编码错误,如下图所示: Ecplise的默认编码,如下图所示: eclipse 由于开源所以支持了比较杂的编码方式,而这些一个工程导入时添加了不少的外来程序,由于不是同 ...

  2. python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题

    说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...

  3. 使用DOM4J解析XML时非法字符Exception

    最近在做简单的解析XML的工作,我使用的是DOM4J来解析,可以说很方便了,在加上使用XPATH来具体确定XML中特定元素下的位置,更加便捷了 可是在使用XML解析是却遇到了这样的问题: org.xm ...

  4. Qt字符编码,创建中文文件

    1.代码文件本身编码: 2.Qt中用于控制读入和写出文件系统时的字符编码由QTextCodec::setCodecForLocale()所决定.一般不用设置,Qt跟系统交互时会根据系统的Locale来 ...

  5. php 转码iconv,PHP iconv()函数转字符编码的问题(转)

    在php函数库有一个函数:iconv(),iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库. 最 近在做一个小偷程序,需要用到iconv函数把抓取来过的utf-8编码的页 ...

  6. python不正确的关系字符_Python系列之 - 字符编码问题

    CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的内容也都是存放在内存中的,断 ...

  7. 常见的字符编码(ASCII码,unicode,utf-8,gbk)

    常见单位换算 bit 位 计算机的最小表示单位(0,1) bytes 字节 计算机最小的存储单位,缩写B 1 B = 8 bit 1 KB = 1024 B 1 MB = 1024 KB 1 GB = ...

  8. EBCDIC 与 GBK 的字符编码及其转换(转)

    概览 有些用户在使用 AIX 时在字符编码方面遇到一些困惑,请看下面的场景: 1,用户用从 AIX 利用 FTP 客户端登录上 IBM i,切换到某个 Library/File,然后 get 其中的某 ...

  9. xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案)

    xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案) 参考文章: (1)xml中1字节的UTF-8序列的 ...

最新文章

  1. 借鉴AQS的CHL思路解决消息多线程消费顺序ACK问题
  2. 使用JAVA建立稳定的多线程服务器
  3. 【ORACLE技术嘉年华PPT】MySQL压力测试经验
  4. windows server 2008虚拟化技术一览
  5. nacos oaut服务地址_spring-boot+nacos+spring-oauth2整合方案
  6. 【项目管理】ITTO-资源管理
  7. VS2008中设置字体大小和添加显示行号
  8. Javascript 面向对象编程
  9. java面向对象编程思想_Java面向对象编程思想
  10. java 请求url 返回数据_java后台发起get请求获取响应数据|chu
  11. 蓝桥杯第八届省赛JAVA真题----正则问题
  12. 主成分分析(PCA)——matlab程序及函数详解
  13. 你真的了解企业虚拟化吗?
  14. debian解决中文乱码,安装chinese font
  15. linux下的文件比对工具,Linux - 文件比对工具
  16. oracle 存储过程body,【随手记】Oracle存储过程报错 Compilation errors for PACKAGE BODY
  17. 简单家乡风景静态HTML网页设计作品 DIV布局家乡介绍网页模板代码-家乡佛山
  18. 【东方传说】世间万物 六界轮回
  19. 沙加在沙罗双树下临死前的一段对白
  20. 从π与e开始 理解正态分布

热门文章

  1. windows安装python库_Windows安装Python机器学习包
  2. mysql jdbc 驱动名称_【经验分享】常用 JDBC 驱动名字和 URL 列表
  3. java 正则表达式 数量
  4. docker 网络设置
  5. cuda Synchronization Functions
  6. Python 装饰器@functools.wraps(func)
  7. C++ 静态成员变量静态成员函数
  8. 2.1 进行误差分析
  9. 计算机等级考试四级有多少题,全国计算机等级考试四级试题(一)
  10. mysql 删除创建表分区_创建,增加,删除mysql表分区