出于某种原因,根据我复制和粘贴url的位置,urllib.request.urlopen不起作用。例如,当我从地址栏复制http://www.google.com/并运行以下脚本时:
from urllib import request
url = "http://www.google.com/"
response = request.urlopen(url)
print(response)
调用urlopen时出现以下错误:
UnicodeEncodeError:“ascii”编解码器无法对位置5中的字符“\ufeff”进行编码:序号不在范围内(128)
但是如果我从网页上的文本中复制url字符串,或者手动键入,它就可以正常工作。说清楚点,这不管用
from urllib import request
url = "http://www.google.com/"
response = request.urlopen(url)
print(response)
#url1 = "http://www.google.com/"
#
#response1 = request.urlopen(url1)
#print(response1)
但事实上:
from urllib import request
#url = "http://www.google.com/"
#
#response = request.urlopen(url)
#print(response)
url1 = "http://www.google.com/"
response1 = request.urlopen(url1)
print(response1)
我怀疑实际地址栏中的编码是不同的,Spyder知道如何处理它,但我不知道,因为我看不到实际发生了什么。你知道吗
编辑:按要求。。。你知道吗
打印(ascii(url)) 'http://www.google.com/\ufeff'
打印(ascii(url1)) 'http://www.google.com/'
事实上,弦是不同的。你知道吗
\ufeff
是一个零宽度的不间断空格,所以难怪你看不到它。是的,你的网址上有一个看不见的字符。至少不是小精灵。你知道吗你可以试试
Unicode字符是字节顺序标记或BOM(更多信息here),您可以通过使用
utf-8-sig
解码然后替换有问题的字符来编码而不使用BOM相关问题 更多 >
编程相关推荐