使用Python我需要通过查询字符串将非utf-8编码数据(特别是shift-jis)传输到URL。 我该如何传输数据?引用它?在utf-8中编码?
由于
答案 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。