3

我有一部智能手机。在这款智能手机上,我有一个移动热点,本质上是一个便携式 WiFi 网络,可以将手机的互联网访问连接到我的笔记本电脑。

在我的笔记本电脑上,我有 Python 3 和requests 库。这是使用 Python 和请求获取google.com,以及我手机的热点。(结果与使用“真正的 wifi”完全一样。)

>>> x = requests.get("http://google.com")
>>> x.apparent_encoding; x[:100]
'ISO-8859-2'
'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content'

好的!一切都按计划进行。

同样在我的笔记本电脑上,我有 Factor,它在标准库中有一个易于使用的 wgetter。这是http-get在“普通”WiFi网络上工作。

IN: scratchpad "http://google.com" http-get nip

--- Data stack:
"<!doctype html><html itemscope=\"\" itemtype=\"http://schema.org..."

成功!

嗯,不。http-get在我手机的热点上:

IN: scratchpad "http://google.com" http-get nip

--- Data stack:
"\x1f\b\0\0\0\0\0\0\x03Å<ëzÛ¶ÿÏSÐH+K+\"u\x17eÚ&iâÓ¤Ik§i7Íú\x03IHbÄIʲ#ë]öQw\x06\0..."

呃。
不仅仅是谷歌。http-getting Stack Overflow 或我手机网络上的任何其他网站都会给出类似的结果。

打印该字符串:

在此处输入图像描述

...

不?啊,好吧,好吧。


默认情况下,因子为 100% UTF-8。ISO-8859应该可以翻译成 UTF-8,而且确实是在不使用我手机的互联网时。

我知道移动服务提供商以将坏事注入服务内容而闻名。但是如果编码相同,Python 对待它们的方式相同,而 Python 说它们具有相同的编码......这里发生了什么?


因子是HEAD。Python是3.5。笔记本电脑是 Ubuntu 15.10,Android 是 5.1.something,可能最重要的是,我的移动服务提供商是 StraightTalk。

正如 Python 演示所示,我通常不会遇到页面内容问题。

4

1 回答 1

1

https://github.com/factor/factor/issues/1589

我没想到看标题。

答案?

content-encoding: Accept-Encoding在普通 WiFi 上。

content-encoding: gzip在热点上。

现在如何用 Factor 解压缩是另一个问题。

于 2016-03-26T01:57:19.393 回答