以前经常来问delphi问题,现在问个Java问题不知道有人知道否?

Description of your first forum.

以前经常来问delphi问题,现在问个Java问题不知道有人知道否?

帖子apple058 » 星期四, 2005年7月28日 00:07


各位大哥:
请问:
URLEncoder.encode()方法,但是在windows下可以,再sun的unix就不行了!怎么回事?

具体情况是

<a href="test.jsp?name='<%=URLEncoder.encode("中国")%>'">
如果程序在windows中
URLEncoder.encode("中国") 的结果是 %D6%D0%B9%FA
但是在 Unix 的结果是               %3F%3F%3F%3F

在Unix下又试了
URLEncoder.encode("中国","gb2312")     值为 %3F%3F%3F%3F    
URLEncoder.encode("中国","iso-8859-1")      %3F%3F%3F%3F
URLEncoder.encode("中国","gbk")             %3F%3F%3F%3F
URLEncoder.encode("中国","utf-8")           %EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD

请问:我怎样才能在Unix下面才能正常得到 %D6%D0%B9%FA 值? 多谢了!
 
 
 

以前经常来问delphi问题,现在问个Java问题不知道有人知道否?

帖子only you » 星期五, 2005年7月29日 09:51


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();
   }