怎么样把中文转成%4e9a%%9a6c%%900a%这样的格式存储到数据库中,然后读取出来后,再转成中文

解决方案 »

  1.   

    顺便问问 这个是asic编码还是uncode?
      

  2.   

    String str1 = URLEncoder.encode("中国", "UTF-8");
    String str2 = URLDecoder.decode("%E4%B8%AD%E5%9B%BD", "UTF-8");
    System.out.println(str1 + "<->" + str2);
      

  3.   

    public static String encode(String src) {
    if (src == null) return null;
    char c;
    int length = src.length();
    StringBuffer tmp = new StringBuffer();
    for (int i= 0; i<length; i++) {
    c = src.charAt(i);
    if (c < 256) {
    tmp.append(c);
    } else {
    tmp.append("%");
    if (c < 0x1000) tmp.append("0");
    tmp.append(Integer.toString(c, 16));
    tmp.append("%");
    }
    }
    return tmp.toString();
    }
      

  4.   

    错了, 除了多字节字符,至少还有个 '%' 也需要转义 public static String escape(String src) {
    if (src == null) return null;
    char c;
    int length = src.length();
    StringBuffer tmp = new StringBuffer();
    for (int i= 0; i<length; i++) {
    c = src.charAt(i);
    if (c<256 && c!='%') {
    tmp.append(c);
    } else {
    tmp.append("%");
    if (c < 0x1000) tmp.append("0");
    if (c < 0x100) tmp.append("0");
    tmp.append(Integer.toString(c, 16));
    tmp.append("%");
    }
    }
    return tmp.toString();
    }
      

  5.   

    public static String decode(String src) {
    if (src == null) return null;
    StringBuffer sb = new StringBuffer(); 
        Pattern p = Pattern.compile("(?i)%([\\da-f]+)%"); 
        Matcher m = p.matcher(src);
        while(m.find()) {
         m.appendReplacement(sb, Character.toString((char)Integer.parseInt(m.group(1), 16))); 
        }
        m.appendTail(sb);
        return sb.toString();
    }
      

  6.   

    好像不是这样的 
    %4e9a% %9a6c% %900a%
    这样的 这个的编码顺序是
    %E4%B8%AD %E5%9B%BD
      

  7.   

    这个方法可以
    请问这个是asic编码的吧?
      

  8.   

    public class Test5 {
        
        private final static char[] HEX = "0123456789abcdef".toCharArray();    public static void main(String[] args) {
            String str = "亚马逊";
            System.out.println(escape(str));
        }
        
        public static String escape(String str) {
            if(str == null || str.length() == 0) {
                return str;
            }        
            char[] chs = str.toCharArray();
            char[] data = new char[chs.length * 6];
            for(int i = 0, offset = 0; i < chs.length; i++) {
                data[offset++] = '%';
                for(int j = 0, k = Character.SIZE / 4; j < k; j++) {
                    data[offset++] = HEX[chs[i] >> ((k - j - 1) * 4) & 0xf];
                }
                data[offset++] = '%';
            }
            return new String(data);
        }
    }
      

  9.   


    这个也不错。很多网址中就是这样转码的。
    下面有介绍这个知识点的。
    http://hi.baidu.com/bug_%B3%E6/blog/item/d4984a828f0360a70df4d202.html
      

  10.   

    老大,那个网站上用的是就是 2 所的 URL 编码,在 Java 中可以使用 URLEncoder.encode 进行编码,
    在 JavaScript 中可以使用 encodeURI 函数进行编码。
      

  11.   


    JavaScript 中
    与 java 里 URLEncoder.encode(str, "UTF-8")
    相对应的方法应该是 encodeURIComponent(str)
    encodeURI(str) 对 ":/?&#" 这样的字符仍不编码