python2.7的中文出现乱码怎么解决

已经不止一次遇到这种问题了,我在程序的开头有加# -*- coding: utf-8 -*-
但运行之后还是乱码,比如下面这段
import requests
from bs4 import BeautifulSoup
url='ht百度tp://连这个都吞music.bai我服du.com/tag/%E6%B5%81%E8%A1%8C'
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
html=requests.get(url,headers=headers)
Soup=BeautifulSoup(html.text,'lxml')
afind=Soup.find_all('span',class_="song-title")
for a in afind:
b=a.find('a')
webs=b['href']
title=b['title']
print(webs+title)

我有自己看了下,title这个变量全是u'\xe.....'之类的的东西,我知道引号里面的东西print出来后就是正确的中文,可是程序似乎print的时候总是会把前面那个u'也算进去然后打出一堆乱码,怎么才能解决这个问题?

第1个回答  2017-01-26
是不是原网页源码里面就是那种格式?
网页源码的格式是utf-8吗?
html.text打印出来乱不乱码?追问

html.text没乱码,原网页是百度音乐的网页,应该是utf-8,但print出来有问题,如果方便的话可以运行一下看下结果,结果是一些乱码,怎么才能转成中文?

追答

首先我不知道你要爬什么东西,我试了一下print出来并没有乱码。可能是你没改网页的编码所以输出才乱码,原网页的编码确实不是utf-8。你在使用requests的时候很方便就可以输出观察的啊。你在用requests的时候先print一下encoding,就像print(res.encoding)(我用的是3),可以看到它的编码是ISO-8859-1,print出来有许多乱码。然后改掉原编码,(res.encoding="utf-8"),再试一次就正常了。不过我还是不知道你要爬什么,其他部分自己尝试。

相似回答