如何使用非utf-8参数打开URL

时间:2009-11-01 13:49:07

标签: python unicode urllib quotes shift-jis

使用Python我需要通过查询字符串将非utf-8编码数据(特别是shift-jis)传输到URL。 我该如何传输数据?引用它?在utf-8中编码?

由于

3 个答案:

答案 0 :(得分:4)

查询字符串参数是基于字节的。虽然IRI-to-URI和键入的非ASCII字符通常使用UTF-8,但没有任何东西强迫您以该编码发送或接收自己的参数。

对于Shift-JIS(实际上通常是cp932,该编码的Windows扩展名):

foo= u'\u65E5\u672C\u8A9E' # 日本語
url= 'http://www.example.jp/something?foo='+urllib.quote(foo.encode('cp932'))

在Python 3中,你可以在quote函数中实现它:

foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')

答案 1 :(得分:1)

我不知道unicode与此有什么关系,因为查询字符串是一串字节。您可以使用urllib中的引用函数来引用纯字符串,以便可以在查询字符串中传递它们。

答案 2 :(得分:0)

通过»查询字符串«表示像http:/{URL}?data=XYZ中的HTTP GET?

您可以通过base64.b64encode使用-_作为替代字符对您拥有的数据进行编码,以便将URL安全作为选项。请参阅here