我正在编写一个脚本,它将使用http GET从我的网站获取一些数据。
我的问题是我必须将unicode字符传递给网站。
我正在阅读包含这些字符的文件,然后我尝试生成一个网址以便发出请求。
该文件是utf-8编码的,我用它来读取它
f = codecs.open("values.txt", encoding='utf-8')
然后我读取文件的第一行,我将值与url连接
sUrl = "http://example.com?word="
value = f.readline()
visitUrl = sUrl + value
如果我使用print visitUrl
输出是正确的。即http://example.com?word =π
如何在不破坏我的特殊字符的情况下使用visiUrl
?
我试图将字符串编码为ascii,但它不适用于所有字符。
答案 0 :(得分:3)
Quote网址
import urllib
s = u'Здравей'
urllib.quote(s.encode('utf-8'))
# %D0%97%D0%B4%D1%80%D0%B0%D0%B2%D0%B5%D0%B9
或直接使用urlencode构建网址
的查询部分urllib.urlencode({'data': s.encode('utf-8')})
# 'data=%D0%97%D0%B4%D1%80%D0%B0%D0%B2%D0%B5%D0%B9'
答案 1 :(得分:1)
使用urllib.urlencode构建URL,而不是尝试通过连接字符串来构建它。 URL中的非ASCII字符需要进行URL编码。