转换出问题了。char是2个字节,int是4个字节

解决方案 »

  1.   

    char转int不会出错,出错的地方是InputStreamReader类不能正确识别分开汉字 你 和数字 ,将 你0 进行了错误的转换,"你"的Unicode值应该为20320,则 你0 应该转换成两个 Unicode 字符 分别为20320 ,48,现在却转换成了
    28003和65533,请问如何解决该问题?谢了!
      

  2.   

    自己怎么解析?告诉我一下哪个JAVA类支持从字节数组转到Unicode字符
    (可从socket读取字节流,基本上一个汉字是3个byte),怎么做?谢了
      

  3.   

    不要放入字节[]里!放入字符[]里!然后构造成String然后再用StreamTokenizer解析或者用正则表达式解析
      

  4.   

    能不能说详细点,StreamTokenizer怎么解析?正则表达式肯定不管用,因为是要转化为Unicode编码,StreamTokenizer能将字节数组转化为Unicode编码吗?
      

  5.   

    从char[]构造成String,Unicode编码不会丢失。然后再解析,解析也不会丢失Unicode编码!!注意:::不要使用字节数组!!
      

  6.   

    但是从socket读取的是字节流,是ASCII编码的,汉字是两个字节的,如果直接读到char数组中,是不可能完成正确转换Unicode编码的,转换会是一个字节转换成一个char字符
      

  7.   

    你用InputStreamReader构造后,就会按照Unicode读取,不再用字节读了!
      

  8.   

    你看到我写的程序了,当然是用InputStreamReader构造的了
    PushbackReader bis = new PushbackReader(new BufferedReader(new InputStreamReader(socket.getInputStream()),socket.getReceiveBufferSize()));读 汉字+数字的时候就是出错,我上面的程序以及结果写得很清楚了
      

  9.   

    你用BufferedReader读取,不用PushbackReader试试。另外你是怎样解析的?
      

  10.   

    程序段改为
    BufferedReader bis = new BufferedReader(new InputStreamReader(socket.getInputStream()),socket.getReceiveBufferSize());
      
      int c;
      while (true) {
      c=bis.read();
      if (c==-1) {
      break;
      }
      else{
       System.out.println(c);
      }
      }
    输出结果还是不对
    输入 你1,你2,结果均为
    28003
    65533
    0
    你 的结果为
    28003
    65533
    你a的结果为
    28003
    29180
    0注:每次输入后(比如输入 你a),程序发送数据时会在字符串后加入ascii值0作为一次传输的结束.你说的解析?解析什么?
    InputStreamReader 对象不就是从流中读取字符数据作为unicode字符吗