> 文档中心 > ISO-8859-1处理案例

ISO-8859-1处理案例

主要分享的内容是对光明网 ISO-8859-1 编码的处理方式。

在这里插入图片描述

我在处理响应时发现返回了乱码数据,经过各种encode、decode并不能解决问题,如果强行 ignore 忽略报错会导致数据丢失。

异常网址:https://zhonghua.cloud.gmw.cn/service/search.do?

ISO-8859-1处理案例

接下来分享一下我的处理方法。


根据经验和分析,此时我选择通过其他方式进行转码查看。

由于JS语言支持面向对象、命令式、声明式、函数式编程范式,并且是目前支持最多编码的语言。

所以我们先把乱码的数据放到JS中尝试解码。

打开一个控制台进行调试:

在这里插入图片描述
通过escape和unescape可以发现能对这串字符串进行编码。

escape编码之后返回的是urlencode百分号编码。那我们可以再次把这段urlencode编码进行解码。


接下来把相应中的乱码拿出来测试。
如: 2021æ‰‹æœºå ‰æ˜Žç½‘æ–‡ç« é¡µ_å ¨åª’ä½“ç
在这里插入图片描述
将其escape
在这里插入图片描述
然后用python进行unquote
在这里插入图片描述

发现已经成功解码。


所以最终处理方法为:

# -*- coding: utf-8 -*-# @Author  : lx# @IDE :PyCharmimport requestsimport execjsfrom urllib import parseheaders = {    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',}js = '''    function get_escape(doc){ return escape(doc);    }'''url = 'https://m.gmw.cn/2022-01/20/content_1302771636.htm'doc = requests.get(url, headers=headers).textdoc = execjs.compile(js).call('get_escape', doc)doc = parse.unquote(doc)print(doc)

局座张召忠