Локализация в snmp

В нашем продукте есть агент snmp, который отправляет системные предупреждения на сервер snmp, и наши предупреждения могут быть в Unicode. Мы используем стороннюю библиотеку lib для отправки, которая по умолчанию кодирует строки в байтовый массив ASKII. Наконец мы получили мусор на сообщениях.

Есть ли поддержка протокола unmp в юникоде?

2 ответа

Задача агентов SNMP - правильно локализовать сообщение. Задача инструмента управления SNMP - правильно декодировать сообщение.

Трассировка WireShark покажет, поместил ли ваш агент правильный проводной массив в провод. Если ваше сообщение - Unicode, байты должны начинаться с действительной преамбулы Unicode.

Также в зависимости от типа вашего устройства в MIB агента есть и другие области, которые помогают инструменту управления правильно декодировать сообщение.

Например, таблица prtLocalization для принтеров должна показывать поддержку Unicode, а prtGeneralCurrentLocalization помогает инструментам управления знать, как правильно декодировать сообщение.

Как уже упоминал Лекс Ли, SNMP не заботится о строковом кодировании. OCTET STRING - это просто байтовый массив. Поэтому, когда вам приходится иметь дело с локализацией / интернационализацией, правильным решением, безусловно, является использование кодирования / декодирования UTF-8. Но имейте в виду, что SNMP4J и многие другие библиотеки обрабатывают байтовый массив как строку ASCII в таких методах, как toString(), Так что вам придется писать свои собственные расширения.

Другие вопросы по тегам