在python中解码URL编码的字节流数据

时间:2016-12-12 16:18:05

标签: python unicode encoding utf-8

我正在接收STX ETX数据包数据,这是一个示例: POST request received

数据已经过URL编码。在编码和发送之前,它是这样的: Data being sent to me

URL编码数据与编码和发送之前的字节数据之间的关系就是这个。

0x41 -> A 
0xd9 -> %D9 
0x33 -> 3 
0x48 -> H 
0x58 -> X 
0x01 -> %01 
0x00 -> %00

经过一些研究后我发现这是将unicode代码点转换为十六进制数字和unicode字符名称。除了第一个字节是ascii字符。

在第一个字符A之后,以下四个字节组成一个4字节整数,这是一个UTC时间戳。

问题

如何使用python将URL转换回十六进制和unicode代码点。我查看了unicodedata模块,但似乎无法找到从unicode字符名称到unicode代码点的转换。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

您可以使用urlparse模块解码该字符串。

import urlparse
data = "/type=stxetx&packet=A%d93HX%01%00&serial=1234&foo=bar"

new_data = dict(urlparse.parse_qsl(data))

assert len(new_data['packet']) == 7
assert new_data['packet'][0] == 'A'
assert ord(new_data['packet'][1]) == 0xd9

参考: