想在java把字符串转换成utf-8的形式 。(其中字符串中的内容包括英文或汉字)
找到如下一个函数,如果字符串时英文的,转化应该没问题;要是中文的,如“你好”,用该函数转换后则变成 %E4%BD%A0这种形式了 应该怎么办? 是否还需要一个汉字转化成utf-8的函数?public   static   String   toUtf8String(String   s)   {   
  StringBuffer   sb   =   new   StringBuffer();   
  for   (int   i=0;i<s.length();i++)   {   
          char   c   =   s.charAt(i);   
          if   (c   >=   0   &&   c   <=   255)   {   
  sb.append(c);   
          }   else   {   
  byte[]   b;   
  try   {   
          b   =   Character.toString(c).getBytes("utf-8");   
  }   catch   (Exception   ex)   {   
          System.out.println(ex);   
          b   =   new   byte[0];   
  }   
  for   (int   j   =   0;   j   <   b.length;   j++)   {   
          int   k   =   b[j];   
          if   (k   <   0)   k   +=   256;   
          sb.append("%"   +   Integer.toHexString(k).   
          toUpperCase());   
  }   
          }   
  }   
  return   sb.toString();   
          } 

解决方案 »

  1.   

    不明白, 这样不就行了么?public   static   String   toUtf8String(String   s)   {   
        return new String(s.getBytes("UTF-8"),"UTF-8"):
    }
      

  2.   

    哦明白了,那个函数是用在 http请求的时候的,
    所以才会出现这种情况,
    如果在程序中使用
    s.getBytes("UTF-8"),"UTF-8");
    这样就可以了。
      

  3.   

    你的这个 
    public   static   String   toUtf8String(String   s)   {   
        return new String(s.getBytes("UTF-8"),"UTF-8"):
    }
    不管s中是英文还是汉字,都可以把它转换成utf-8的形式么??
      

  4.   

    return new String(s.getBytes("UTF-8"),"UTF-8")// 怎么两个都是utf-8 ?
      

  5.   

    本来也是没有区分的,
    你查到的方法由于使用户html请求的,
    所以才会有区别。s.getBytes("UTF-8");
    的意思是以UTF-8的编码取得字节
    new String(XXX,"UTF-8");
    的意思是以UTF-8的编码生成字符串