0

我正在使用 Net-SNMP 进行 snmpget。具体来说,我通过 os.popen("etc") 发送命令。返回的值是一个用空格分隔的十六进制字符串,类似于:“A0 f0 D0”。返回的值有时以 :"Hex-String: A0 f0 D0.." 的形式出现,但有时以 "String:\xA0\xf0\xD0" 的形式出现,如您所见,空格用 "\ X”。有谁知道为什么会发生这种情况?如果返回值是带空格的 HEX 字符串,而不是 \x,我会更喜欢它。

我应该注意到我正在使用 Eclipse 和 Pydev。然后我在 pyscripter 中运行相同的代码并取回我的 Hex-String 值。我在 Pyscripter 中再次运行它,然后返回了 \x。这与未封闭的管道有关吗?

我还应该提到,我得到的数据在另一种意义上是不好的。带空格的十六进制字符串返回正确的数据值,但带 \xs 的字符串返回不正确的值。

我使用过 Wireshark,看起来 get 请求与从 MIB 发送的请求完全相同。MIB 请求返回正确数据,而 Eclipse 请求仍然返回错误数据。

4

1 回答 1

0

PyDev 做了一件不同的事情,即设置: sys.setdefaultencoding(encoding) 与 java 控制台的编码(这样,如果您将 unicode 打印到控制台,它不会失败,说 unicode 不会解码为 ascii)。要查看这是否是您的问题,您可以转到 eclipse\plugins\org.python.pydev\PySrc\pydev_sitecustomize\sitecustomize.py 并注释以下行: sys.setdefaultencoding(encoding)

于 2012-01-04T17:47:33.983 回答