今天用 Python(v3.7.0)解析某个网页时(UTF8 编码),中文字符变成了很多以 &#x 开头的乱码字符串,具体的形式是 &#x + 一个十六进制的数字,直接用 print 输出出来也不会变成中文,而是直接输出。一开始老王以为是 UTF8 编码,后来发现是 HTML 的转义序列,这里分享下解决方法。
一、基础知识
在网页源码中,常见以 &#x 开头,后面接十六进制数字,或者以 &# 开头,后面接十进制数字,这些字符串其实不是编码,而是HTML、XML 等 SGML 类语言的转义序列(escape sequence)。
更多的可以参考知乎:
&#x开头的是什么编码呢。浏览器可以解释它。如中国等同与中文”中国”? – 梁海的回答 – 知乎 https://www.zhihu.com/question/21390312/answer/18091465
二、解决方法
我用的是 Python3,直接用 html 自带的一个方法就搞定了:
html.unescape(title)
如果你是低版本的 Python,那么分享一个网上的别人的方法:
from HTMLParser import HTMLParser print HTMLParser().unescape('中国')