2015-04-07 113 views
2

我有一个像蟒蛇转换中国字符的URL

HREF一个url =” ../工作/ jobarea.asp?C_jobtype =经营管理主管& peoplenumber = 151"

这显示在检查元素。 但是,当在新的标签打开它被示出作为

../job/jobarea.asp?C_jobtype=%B8g%C0%E7%BA%DE%B2z%A5D%BA%DE & peoplenumber = 151

如何知道浏览器使用哪种类型的编码进行转换。当我尝试执行scrapy时,它显示了一些其他格式,并且正在停止为500内部服务器错误。你能解释我吗?

+1

是否HTML页面有任何''这头设置页面编解码器?在HTTP头文件中可能还有一个内容类型集('Content-Type:text/html; charset = ....')。 –

+0

@MartijnPieters该页面只有如下标头:'Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,image/webp,*/*; q = 0.8 Accept-Encoding:gzip,deflate ,sdch Accept-Language:zh-CN,en; q = 0.8 Cache-Control:no-cache Connection:keep-alive Cookie:case_noteice = mycase; myjobcrm = crmid = myjob; connother%5Fdb = DB1; connjob%5Fdb = DB2; ASPSESSIONIDASARCSTS = MJGFLIOCJADBKKMKMFDEIPNA 主持人:www.myjob.com.tw 杂注:无缓存 的User-Agent:Mozilla的/ 5.0(Windows NT的6.1; WOW64)为AppleWebKit/537.36(KHTML,例如Gecko)Chrome浏览器/ Safari浏览器41.0.2272.118/537.36' –

+1

它也会有一个Content-Type头。如果页面中没有定义任何字符集,浏览器会在该标题中使用一个“charset”参数。 –

回答

3

它的Tradtional中国,所以尽量cp950

#-*-coding:utf8 -*- 

import urllib 
s = '經營管理主管'.decode('utf-8').encode('cp950') 
print urllib.quote(s) 

q ='%B8g%C0%E7%BA%DE%B2z%A5D%BA%DE' 
print urllib.unquote(q).decode('cp950').encode('utf-8') 

结果

%B8g%C0%E7%BA%DE%B2z%A5D%BA%DE 
經營管理主管 
+0

[python 3的parse.quote函数](http://stackoverflow.com/a/13625238/2327328) – philshem

+0

@philshem,我需要它在Python 2.7 –

+0

@Aaron,超级的东西。爱它。但关键是,当我这样做,我得到404页面无响应...这是我可以打印到控制台的网址... ** u'../ job/jobarea.asp?C_jobtype = \ u7d93 \ u71df1 \ u7406 \ u4e3b \ u7ba1&peoplenumber = 151'** –