0

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

谢谢

4

3 回答 3

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 中,您可以在引用函数本身中执行此操作:

foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')
于 2009-11-01T15:58:35.657 回答
1

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

于 2009-11-01T13:59:33.947 回答
0

通过»查询字符串«,您的意思是 HTTP GET 像http:/{URL}?data=XYZ

base64.b64encode您可以通过使用-_作为替代字符对您拥有的任何数据进行编码,以确保 URL 安全。见这里

于 2009-11-01T14:00:57.970 回答