收到  这个copy到google里面一查,发现是‘收到’ 请问, 
1 &#5位数字;这个格式是汉字的unicode编码吗? 
2 java里有直接把这种编码转为gb2312的函数吗? 我在网上找了很多例子,都不正确。 
请给个可运行的例子,然后一定马上结帖。
http://topic.csdn.net/u/20080606/13/6a692578-156b-4036-9feb-30d6d8c6c638.html 和这个帖子为同一帖,分数一起给!

解决方案 »

  1.   

    Commons Lang 包中有 
      

  2.   

    &#这个是url的编码吧,后面这几个数字是字符的unicode值
    使用String的getBytes(String charsetName)方法就可以从unicode转换到你想要的字符集,
    不过要把那些&#;去掉再加上\u来表示是unicode
    具体自己写
      

  3.   

    收
    把&#和;之间的数字取出来,转化成char类型即可
    相当于(char)Integer.valueOf("25910");下面的代码是用16进制做的,十进制更简单一些,便是边界控制要改一改。
    16进制的格式是这样的香其实没有什么差别。只是把取数字的地方改一下,转整型的时候不用十六进制就OK了。package cn.yicha.test;public class wren4255 {
    public final static String HEX_CHARS = "0123456789abcdefABCDEF"; public static void main(String args[]) {
    System.out.println(UTF2GB("香"));
    } public static String UTF2GB(String UTFString) {
    if (UTFString == null) {
    return "";
    }
    StringBuffer sb = new StringBuffer(UTFString.length());
    int origPos = 0;
    for (int i = 0; i < UTFString.length();) {
    origPos = i;
    if ((i + 7) < UTFString.length()) {
    if (UTFString.charAt(i) == '&' && UTFString.charAt(++i) == '#'
    && UTFString.charAt(++i) == 'x') {
    if (UTFString.charAt(i + 5) == ';') {
    if (HEX_CHARS.indexOf(UTFString.charAt(i + 1)) == -1
    || HEX_CHARS.indexOf(UTFString.charAt(i + 2)) == -1
    || HEX_CHARS.indexOf(UTFString.charAt(i + 3)) == -1
    || HEX_CHARS.indexOf(UTFString.charAt(i + 4)) == -1) {
    i--;
    sb.append(UTFString.charAt(i - 1));
    } else {
    sb.append((char) Integer.valueOf(
    UTFString.substring(++i, i + 4), 16)
    .intValue());
    i += 5;
    }
    } else if (UTFString.charAt(i + 3) == ';') {
    if (HEX_CHARS.indexOf(UTFString.charAt(i + 1)) == -1
    || HEX_CHARS.indexOf(UTFString.charAt(i + 2)) == -1) {
    i--;
    sb.append(UTFString.charAt(i - 1));
    } else {
    sb.append((char) Integer.valueOf(
    UTFString.substring(++i, i + 2), 16)
    .intValue());
    i += 3;
    }
    } else {
    i--;
    sb.append(UTFString.charAt(i - 1));
    }
    } else {
    if (origPos == i) {
    sb.append(UTFString.charAt(i));
    i++;
    } else {
    sb.append(UTFString.substring(origPos, i));
    }
    }
    } else if ((i + 5) < UTFString.length()) {
    if (UTFString.charAt(i) == '&' && UTFString.charAt(++i) == '#'
    && UTFString.charAt(++i) == 'x'
    && UTFString.charAt(i + 3) == ';') {
    if (HEX_CHARS.indexOf(UTFString.charAt(i + 1)) == -1
    || HEX_CHARS.indexOf(UTFString.charAt(i + 2)) == -1) {
    i--;
    sb.append(UTFString.charAt(i - 1));
    } else {
    sb
    .append((char) Integer.valueOf(
    UTFString.substring(++i, i + 2), 16)
    .intValue());
    i += 3;
    }
    } else {
    if (origPos == i) {
    sb.append(UTFString.charAt(i));
    i++;
    } else {
    sb.append(UTFString.substring(origPos, i));
    }
    }
    } else {
    sb.append(UTFString.charAt(i));
    i++;
    }
    }
    return sb.toString();
    }
    }
      

  4.   

    &#21040=U+5230(Unicode)=&#x5230=到=E5 88 B0(UTF-8)=\u5230(javascript)&#21040只是一种编码格式,它是由&#+十进制数 或者是由&#x+十六进制数构成它的意义在于表示unicode,21040是unicode码(十进制),十六进制就是x5230,它只是unicode的表现方式或者说是实现方式,想utf-8就是unicode的一种实现方式。在html中&#21040表示“到”,你可以把它粘贴到html中看看,有的时候后面还需要加“;”,这是由不同的浏览器决定的,一般是在html中使用,在其他的环境中还不了解
      

  5.   

    用现有的包是最好的了.commons.lang包能解决.
      

  6.   

    http://www.box.net/index.php?rm=box_download_shared_file&file_id=f_149955602&shared_name=dqq7c08co4
    汉字转unicode编码工具,转换看看是不是一样就知道了。连是什么编码都不清楚,如何查找java能否转码?