Python字符串和UTF-8问题

时间:2011-08-05 11:19:28

标签: python utf-8

我正在编写一个脚本,它将使用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,但它不适用于所有字符。

2 个答案:

答案 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编码。