在我本机下的webserver上, available()一般返回0,可是有时候返回大于0的有效值。疯了----可在另外一台unix server上,可以返回有效的值。怎么办?

解决方案 »

  1.   

    在本机(PC)的WebServer上,available()有时返回0,有时返回大于0的有效的length.可是在一台unixServer上,available()总返回大于0的有效值。怎么回事呀?
      

  2.   

    String str=new String(request.getParameter("tx_id").getBytes("ios8859_1"),"UTF-8");
    这样不行吗?!你的代码拿上来看看吧!
      

  3.   

    没太看懂,你是想把request的parameter转成中文?如果用Tomcat的话,用new String(request.getParameter("myParameter").getBytes("ISO8859_1 
    "), "GBK")就可以。注意Java的String都是Unicode,跟UTF-8无关。
    如果用InputStream,你不能依靠available(),这个不能给你长度的。要得到长度要么让客户端从http头把长度传过来,要么连续读InputStream直到读出-1为止。
      

  4.   

    这是我试验的代码,跑在unix server上,是好的,本机就不好了。   ServletInputStream sis = request.getInputStream();
        int length2 = sis.available();
      byte[] bb = new byte[length2];
      sis.read(bb, 0, length2);
      String inputString = new String(bb);
      

  5.   

    这样取:
    ServletInputStream sis = request.getInputStream();
    ByteArrayOutputStream bout = new ByteArrayOutputStream();
    byte[] buf = new byte[1024];
    int len = 0;
    while( (len=sis.read(buf, 0, buf.length))!=-1 )
    {
       bout.write( buf, 0, len );
    }
    String inputString = new String( bout.toByteArray() );
      

  6.   

    我想应该用getBytes("ios8859_1"),"UTF-8");