【发布时间】:2012-07-21 00:17:25
【问题描述】:
我与编码斗争太久了,今天我想打破思维障碍。
现在,我正在使用 Requests 抓取一堆网站,据我所知,它使用 HTTP 标头来找出页面正在使用的编码,当该网站的标题丢失。从那里,它解码它下载的字节码,然后帮助我在r.text 中提供一个 unicode 对象。
一切都好。
但我感到困惑的是,我从那里对文本进行了一些处理,然后将其打印到标准输出,在我打印时提供编码:
print foo.encode('utf-8')
问题是,当我这样做时,打印出来的东西就搞砸了。在下文中,我希望在“判断”和“标准”这两个词之间加一个破折号:
Declaratory judgmentsStandard of review.
相反,我得到了一个四四方方的东西,里面有四个小数字。当然,它似乎没有出现在这里,但我认为数字是 0097,这与我得到的结果相对应:
repr(foo)
u'Declaratory judgments\x97Standard of review.'
这么说是有道理的,但我的 emdash 呢?
这个过程归结为:
- 请求下载页面并将文本智能解码为 unicode 对象
- 我使用它
- 我将其编码为 utf-8 并打印出来。
问题出在哪里?这听起来像mythical unicode sandwich 对我来说,但显然我错过了一些东西。
【问题讨论】:
标签: python unicode encoding python-requests