使用 Python,我需要通过查询字符串将非 utf-8 编码数据(特别是 shift-jis)传输到 URL。我应该如何传输数据?引用它?用 utf-8 编码?
谢谢
查询字符串参数是基于字节的。虽然 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 中,您可以在引用函数本身中执行此操作:
foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')
我不知道 unicode 与此有什么关系,因为查询字符串是一串字节。您可以使用urllib中的引用函数来引用纯字符串,以便它们可以在查询字符串中传递。
通过»查询字符串«,您的意思是 HTTP GET 像http:/{URL}?data=XYZ
?
base64.b64encode
您可以通过使用-_
作为替代字符对您拥有的任何数据进行编码,以确保 URL 安全。见这里。