python编码问题

用Python requests获取网页数据时 发现一个问题 返回的数据text部分可能会是乱码

t = requests.post(url, data=params, headers=header)
print(t.text)
<li >ç”¨æˆ·åä¸ºä¸€å¡é€šå·ï¼Œå¯†ç ä¸ºèº«ä»½è¯å·ç åŽå…­ä½ï¼Œèº«ä»½è¯åŽ6位带有X的X为大写。(ä¸ªåˆ«æ•™å¸ˆèº«ä»½è¯å·ç ä¸º15位)</li>
           <li style="list-style-type: none;"><br/></li>
           <li >å¯†ç åœ¨è¿›å…¥ç³»ç»ŸåŽå¯ç”±è¯»è€…é‡æ–°è®¾ç½®</li>
           <li style="list-style-type: none;"><br/></li>
           <li>é™äºŽé˜…è§ˆè¯»è€…å’Œé€šç”¨è¯è¯»è€…ç”¨æˆ·åå’Œåˆå§‹å¯†ç ä»ä¸ºè¯ä»¶å·</li>
           <li style="list-style-type: none;"><br/></li>
           <li>Email由您自行设定,登陆后可以修改</li>
           <li style="list-style-type: none;"><br/></li>
           <li>å¯†ç å–å›žéœ€è¦æ‚¨é¦–å…ˆéªŒè¯æ‚¨çš„Email</li>

看来是解码问题,去官方文档看一下
找了半天,发现这个

大意就是说返回内容根据http头里面的内容编码,如果头里面没有指定的话就可能出现编码错误
所以只要先前指定就可以了

t = requests.post(url, data=params, headers=head)
t.encoding = "Unicode"
print(t.text)

<li >用户名为一卡通号,密码为身份证号码后六位,身份证后6位带有X的X为大写。(个别教师身份证号码为15位)</li>
           <li style="list-style-type: none;"><br/></li>
           <li >密码在进入系统后可由读者重新设置</li>
           <li style="list-style-type: none;"><br/></li>
           <li>限于阅览读者和通用证读者用户名和初始密码仍为证件号</li>
           <li style="list-style-type: none;"><br/></li>
           <li>Email由您自行设定,登陆后可以修改</li>
           <li style="list-style-type: none;"><br/></li>
           <li>密码取回需要您首先验证您的Email</li>

问题解决

posted @ 2016-05-07 10:47  匣中失乐  阅读(1004)  评论(0编辑  收藏  举报