SNMP и UFT-8
-
Добрый день!
Есть МФУ которая отдаёт по SNMP строки в uft8. Но NetXMS, как я понял, дополнительно конвертирует данные в utf8. В итоге получается мусор.
Вот что выдаёт устройство:root@NetXMS:~# snmpwalk -v 2c -c public km37ad84 iso.3.6.1.2.1.43.16.5.1.2.1.1 iso.3.6.1.2.1.43.16.5.1.2.1.1 = Hex-STRING: D0 A0 D0 B5 D0 B6 D0 B8 D0 BC 20 D0 BE D0 B6 D0 B8 D0 B4 D0 B0 D0 BD D0 B8 D1 8F 2E 2E 2E 2E 20 20 root@NetXMS:~# ipython3 Python 3.7.3 (default, Jan 22 2021, 20:04:44) Type "copyright", "credits" or "license" for more information. IPython 5.8.0 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: import codecs In [2]: codecs.decode("D0 A0 D0 B5 D0 B6 D0 B8 D0 BC 20 D0 BE D0 B6 D0 B8 D0 B4 D0 B0 D0 BD D0 B8 D1 8F 2E 2E 2E 2E 20 20".replace(' ', ''), 'hex').decod ...: e('utf8') Out[2]: 'Режим ожидания.... ' In [3]: quitА на скриншоте то что видно в консоли NetXMS.
Как это можно исправить? В описании скриптового языка не нашёл работы с кодировками текста.
Сервер на Debian 10 версия 3.9.176-1

-
На линуксах это определяется CodePage в конфигурационном файле сервера.
-
Спасибо! Помогло.
Но не очевидно, как быть если какие-то железки будут отдавать данные в cp1251 или cp866?И почему по умолчанию на Linux не UTF-8? Да просто, локаль настроена, почему не брать настройки оттуда:
locale LANG=ru_RU.UTF-8 LANGUAGE= LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL= -
В планах есть мысли сделать NXSL функции для конвертации текста в разных кодировках.
-
@prof-alex said in SNMP и UFT-8:
И почему по умолчанию на Linux не UTF-8?
Исторически так сложилось
Это очень старая часть кода, правильно конечно использовать системный locale (как сделано в Windows версии). Отмечу себе для переделки в 4 версии. -
-
А что в Control Panel -> Regional settings -> Language for non-unicode programs?
-
-
Похоже, что этот принтер отдает в UTF-8. На windows поскольку мы берем кодировку из control panel, а там нет варианта utf-8, то там пока никак. Или перебираться на линукс, или через какое-то время будет или поддержка кодировки в свойствах ноды, или NXSL функции для перекодировки (тогда их можно будет в transformation script использовать).
-
@filipp-sudanov said in SNMP и UFT-8:
Похоже, что этот принтер отдает в UTF-8. На windows поскольку мы берем кодировку из control panel, а там нет варианта utf-8, то там пока никак. Или перебираться на линукс, или через какое-то время будет или поддержка кодировки в свойствах ноды, или NXSL функции для перекодировки (тогда их можно будет в transformation script использовать).
надо в NXSL перекодировку добавлять - это более нужно
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login