关于python3.8中lxml.etree出现中文乱码问题分析
先说明本人说使用的平台为rhel7,python版本为3.8.本来想要执行的任务是通过lxml.etree提取网页中的信息,但由于从该网页中提取的信息带有中文,显示全为乱码,参考了很多文章,发现文不对题,无法解决问题,更加没有进一步深入去解析,所以自己又花费了一些时间查阅,有了一个大概的印象,肯定还有遗漏之处,请大家指正。
首先,对lxml.etree下的tostring(enconding = ‘utf-8’).decode(‘utf-8’)进行说明,网上大多数方法都是提供这种解决方案,实测之下,发现对整个网页是有效的,但当针对页面的某个部分提取显示时,却仍旧显示中文乱码。
所以又不断查找,也翻阅官方文档,看到了相关的解释,地址是官方文档地址 。在它的标题为响应内容的段落下,解释了原因,结合本人的理解总结如下。
Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。网页的格式在某些情况下可能会与requests的解码格式不同,猜测requests的默认解码方式为utf-8,至于网页的格式可以通过在浏览器按F12查看,具体信息在html下的head头中,我要提取信息的网页的head如下:meta http-equiv=“Content-Type” content=“text/html; charset=gb2312”,说明该网页的中文字符