手持机调用这个 Encoding.GetEncoding("GB2312").GetString(byte,0,byte.Length);
这句话以后报错,如果能解析出来的数就不报错,如果解析不出来就报错,这是为什么?解析不出来不是应该是乱码吗?
虽然这个可以捕获异常,但是总是感觉听不爽得,有没有可以解决的,
错误如下:未处理 ArgumentException
Value does not fall within the expected range.

解决方案 »

  1.   

     对应的值不是预期的范围之内。
     可能是Byte获取值的问题。
      

  2.   


    这个byte里面的值有关系吗?不是解析不出来就是乱码吗?
      

  3.   

    这个byte里面的值有关系吗?不是解析不出来就是乱码吗?
      

  4.   

    你的字节数组,不确定,所以有时不是完整字符串,这样在手机等智能设备中,将出错
    你用try吧,出错则字节数-1后在,再重新得到字符串在最后不加个?即可,
    另此时将这个出错的字节,没组合的,留做下次补加吧
      

  5.   


    try {
    viewmsg.Text = System.Text.Encoding.Default.GetString(outBytes, qd, bytes);
    //根据发送字节数组的起点和个数,截取,再转成字符串!!
    }
    catch (Exception ex) {
    try {
    viewmsg.Text = System.Text.Encoding.Default.GetString(outBytes, qd, bytes - 1) + "?";
    //  "?" = 少取半个汉字显示(1字节)
    }
    //ex As Exception
    catch {
    }
    }