Net-SNMP возвращает HexString, а затем просто String (Eclipse и Pydev)

Я делаю snmpget, используя Net-SNMP. В частности, я отправляю команду через os.popen("etc"). Возвращаемое значение представляет собой шестнадцатеричную строку, разделенную пробелами, примерно так: «A0 f0 D0». Возвращаемое значение иногда имеет форму: «Hex-String: A0 f0 D0..», но иногда имеет вид «String:\xA0\xf0\xD0», где, как видите, пробелы заполнены «\ Икс". Кто-нибудь знает, почему это может происходить? Я бы предпочел, чтобы возвращаемое значение было HEX-строкой с пробелами, а не \x.

Я должен отметить, что я использую Eclipse с Pydev. Затем я запустил тот же код в pyscripter и вернул свое значение Hex-String. Я снова запустил его в Pyscripter, а затем вернулся \x. Это как-то связано с незакрытой трубой?

Я также должен упомянуть, что данные, которые я возвращаю, плохи в другом смысле. Hex-String с пробелами возвращает правильные значения данных, но String с \xs возвращает неверные значения.

Я использовал Wireshark, и похоже, что запрос на получение точно такой же, как и запрос, отправленный из MIB. Запрос MIB возвращает правильные данные, в то время как запрос Eclipse по-прежнему возвращает неверные данные.


person user442920    schedule 03.01.2012    source источник


Ответы (1)


PyDev делает одну вещь по-другому, а именно устанавливает: sys.setdefaultencoding(encoding) с кодировкой консоли Java (так что, если вы печатаете unicode на консоли, он обязательно скажет, что unicode не декодируется как ascii). Чтобы убедиться, что это ваша проблема, вы можете перейти к eclipse\plugins\org.python.pydev\PySrc\pydev_sitecustomize\sitecustomize.py и прокомментировать строку, которая делает: sys.setdefaultencoding(encoding)

person Fabio Zadrozny    schedule 04.01.2012