的Python POST请求编码
问题描述:
的情况,我送POST请求,并试图获取与Python的响应 问题是,它扭曲了非拉丁字母,当我取得与直接链接在同一页不发生(没有搜索结果),但POST请求不会生成链路的Python POST请求编码
这里是我做的:
import urllib
import urllib2
url = 'http://donelaitis.vdu.lt/main_helper.php?id=4&nr=1_2_11'
data = 'q=bus&ieskoti=true&lang1=en&lang2=en+-%3E+lt+%28+71813+lygiagre%C4%8Di%C5%B3+sakini%C5%B3+%29&lentele=vertikalus®=false&rodyti=dalis&rusiuoti=freq'
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
file = open("pagesource.txt", "w")
file.write(the_page)
file.close()
每当我试图
thepage = the_page.encode('utf-8')
我得到这个错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 1008: ordinal not in range(128)
每当我试图做变化的响应报头的Content-Type:text/html的;字符集= UTF-8,我做
response['Content-Type'] = 'text/html;charset=utf-8'
我得到这个错误:
AttributeError: addinfourl instance has no attribute '__setitem__'
我的问题:是否可以编辑或删除响应或请求标题? 如果没有,是否有另一种方法来解决这个问题,其他复制源到记事本++和手动固定编码?
我是新来的Python和数据挖掘,真希望你让我知道如果我; M做错事
感谢
答
两件事情。首先,你不想编码的响应,你要对它进行解码:
thepage = the_page.decode('utf-8')
其次,你不想设置页眉上的反应,将其设置上的要求,使用add_header
方法:
req.add_header('Content-Type', 'text/html;charset=utf-8')
答
为什么不试试你的thepage = the_page.decode('utf-8')
代替encode
因为你要的是从UTF-8编码的文本为Unicode移动 - 编码无关 - 内部字符串?
+0
我试图解码(“UTF-8”),以及,我得到这个错误: UnicodeDecodeError:'utf8'无法解码位置7281-7282中的字节:无效的连续字节 – Earl 2012-02-27 11:33:18
当我向请求添加标题时,它返回没有搜索结果的页面。 我想改变响应头文本/ html;字符集= UTF-8“到 'text/html的',bacause附加字符集= UTF-8可能是造成问题的原因,没有? – Earl 2012-02-27 11:38:03
这可能意味着更改您已阅读的回复的标题?我根本不懂。 – 2012-02-27 11:53:41
嗯,我的意思是莫名其妙地检索如果没有编码线的响应...不知道寿,如果能够帮助或者是技术上posibble在所有 – Earl 2012-02-27 12:03:53