Monitoring snmp中的本地化

Monitoring snmp中的本地化,monitoring,snmp,systemmanagement,Monitoring,Snmp,Systemmanagement,我们的产品中有snmp代理,它向snmp服务器发送系统警报,我们的警报可能是Unicode格式的。我们使用第三方lib进行发送,默认情况下,第三方lib将sting编码为ASKII字节数组。最后我们收到了垃圾短信 snmp协议是否支持unicode?,因为Lex Li已经提到snmp不关心字符串编码。八位字节字符串只是一个字节数组。因此,当您必须处理本地化/国际化时,正确的解决方案无疑是使用UTF-8编码/解码。但请记住,SNMP4J和许多其他库在toString()等方法中将字节数组视为ASC

我们的产品中有snmp代理,它向snmp服务器发送系统警报,我们的警报可能是Unicode格式的。我们使用第三方lib进行发送,默认情况下,第三方lib将sting编码为ASKII字节数组。最后我们收到了垃圾短信


snmp协议是否支持unicode?

,因为Lex Li已经提到snmp不关心字符串编码。八位字节字符串只是一个字节数组。因此,当您必须处理本地化/国际化时,正确的解决方案无疑是使用UTF-8编码/解码。但请记住,SNMP4J和许多其他库在
toString()
等方法中将字节数组视为ASCII字符串。因此,您必须编写自己的扩展。

正确本地化消息是SNMP代理的工作。 SNMP管理工具的工作是正确解码消息

WireShark跟踪将显示代理是否在线路上放置了正确的字节数组。 如果消息是Unicode,则字节应以有效的Unicode前导开头

此外,根据您的设备类型,代理的MIB中还有其他区域可帮助管理工具正确解码消息


例如,打印机的prtLocalizationTable应显示对Unicode的支持,prtGeneralCurrentLocalization可帮助管理工具了解如何正确解码消息。

SNMP仅传输字节(其八位字符串类型不适用于带编码的“现代字符串”)。因此,您有责任在发送之前对数据进行编码,并在接收时使用正确的解码代码对数据进行解析。你们不应该期望SNMP为你们做更多的事情。当然,但接收者将如何决定它是否是Unicode,以决定如何解码?我认为它应该由协议本身支持。文本编码超出了SNMP的范围。在收到该文本的字节后,您的应用程序将负责声明其编码并将字节解码为文本。这是否意味着对于第三方SNMP接收器,无法本地化消息?您是否有第三方库的源代码?一个设计良好的程序应该可以让您灵活地指定文本编码(我的个人项目就是这样),如果您碰巧遇到了一个错误的程序,您就会陷入困境。Larry,我理解,但是有没有办法通过协议“指定”消息的正确本地化,我发现了prtGeneralCurrentLocalization snmp对象,管理工具可以设置prtGeneralCurrentLocalization的值,以便以管理工具想要的语言检索本地化字符串。例如,对于本地walk-up用户,打印机控制台语言可以是法语,但管理工具希望以英语返回所有字符串。因此,在检索本地化字符串之前,管理工具将检查或设置打印机的prtGeneralCurrentLocalization为英语,检索本地化字符串,并尝试将其解码为英语。