我们的产品中有 snmp 代理,它将系统警报发送到 snmp 服务器,我们的警报可能是 Unicode。我们使用 3rd 方库进行发送,默认情况下将字符串编码为 ASKII 字节数组。最后,我们在消息上得到了垃圾。
snmp 协议是否有 unicode 支持?
我们的产品中有 snmp 代理,它将系统警报发送到 snmp 服务器,我们的警报可能是 Unicode。我们使用 3rd 方库进行发送,默认情况下将字符串编码为 ASKII 字节数组。最后,我们在消息上得到了垃圾。
snmp 协议是否有 unicode 支持?
正如 Lex Li 已经提到的,SNMP 不关心字符串编码。OCTET STRING 只是一个字节数组。因此,当您必须处理本地化/国际化时,正确的解决方案绝对是使用 UTF-8 编码/解码。但请记住,SNMP4J 和许多其他库在方法中将字节数组视为 ASCII 字符串,例如toString()
. 所以你必须编写自己的扩展。
正确本地化消息是 SNMP 代理的工作。正确解码消息是 SNMP 管理工具的工作。
WireShark 跟踪将显示您的代理是否在网络上放置了正确的字节数组。如果您的消息是 Unicode,则字节应以有效的 Unicode 前导码开头。
此外,根据您的设备类型,代理的 MIB 中还有其他区域可帮助管理工具正确解码消息。
例如,打印机的 prtLocalizationTable 应该显示对 Unicode 的支持,而 prtGeneralCurrentLocalization 帮助管理工具知道如何正确解码消息。