zoukankan      html  css  js  c++  java
  • 关于SNMP4J取值乱码解决方法

    由于工作,需要使用SNMP协议取设备的数据,但是遇到中文时,尴尬出现了,一串字母数字夹带着冒号的数据,怀疑了一堆字符编码,搞了好久最后放弃了,只得强行不使用中文。一段时间后,这个问题重新出现。。。算了,估计大家不想看我唠叨,我们来解决它!

    //问题原因:OctetString Class 中这两个方法
    public boolean isPrintable()
    {
      for (int i = 0; i < value.length; i++) {
        char c = (char)value[i];
        if (((Character.isISOControl(c)) || ((value[i] & 0xFF) >= 128)) && (!Character.isWhitespace(c)))
        {
          return false;
        }
      }
      return true;
    }
    
    public String toString() {
      if (isPrintable()) {
        return new String(value);
      }
      return toHexString();
    }
    

      怎么解决呢,作者找到一条路后翻出好几个解决办法,一一给大家介绍

    方法一:

     1 //修改snmp4j.jar toString方法 
     2   public String toString()
     3   {
     4     try
     5     {
     6       return new String(value, "iso8859_1");
     7     }
     8     catch (Exception localException)
     9     {
    10       localException.printStackTrace();
    11     }
    12     return "";
    13   }

    方法二:

     1 public static String getFormatStr(String octetString){
     2     try{
     3         if(!octetString.contains(":")) {
     4             return octetString;
     5         }
     6         String[] temps = octetString.split(":");
     7         byte[] bs = new byte[temps.length];
     8         for(int i=0;i<temps.length;i++)
     9             bs[i] = (byte)Integer.parseInt(temps[i],16);
    10             return new String(bs);
    11         }catch(Exception e){
    12             return null;
    13     }
    14   }
    15 
    16 str = getFormatStr(str);

    方法三:

     1 str = new String(OctetString.fromHexString(stsr).getValue()) 

    好了,暂时作者想到的解决办法就这么多,想深入了解的朋友可以根据下方给出的三种编码格式自行钻研。

    涉及到的编码:ASCⅡ、ISO8859_1、GB2312

  • 相关阅读:
    eclipse常用快捷键
    .net操作Excel快速
    treeview使用sort以后取消排序
    行转列,参数是文本类型
    easyui分页控件汉化扩展
    在子页面中获取父frameset中元素
    easyui-datagrid自定义分页控件样式
    字符串和图片转换
    VS2012设置随笔
    DevExpress之GridControl
  • 原文地址:https://www.cnblogs.com/cfsxgogogo/p/7280307.html
Copyright © 2011-2022 走看看