String tmp = "我";  // 我这个 "我" 字,经常某种编码后,,变成了上面那个字符串,,,
这中间,我不知道,别人是怎么编码的..我现在要把它还原成中文!!!

解决方案 »

  1.   

    String.replaceAll("我", "我");
      

  2.   

    我是楼主:
    byte data [] = {(byte)230,(byte)136,(byte)145};
    String ch = new String(data,"UTF-8");   // 还原成了 "我";我现在通过这种方式,,还原了..
    不过,不知道原因,,是怎么样将一个Unicode的码的中文,,拆成三个这样的数字...
    又通过这种方式,还原成了中文...期待高人解释....
      

  3.   

    "我" 是在utf的编码基础上进行操作得来的,
    utf的格式是 “e69687”其中是3个字符的16进制的编码
    而每一个char对应两位字节的utf编码,把3个字符拆分出来,求出每个char的对应的10进制的编码,我想就是楼主看到的样子了
      

  4.   

    中文 在 UTF-8 编码中就是三个字节的你可以用                 byte[] bb =  "我".getBytes("UTF-8"); 
                     System.out.println(new String(bb,"UTF-8"));
    for(int i = 0 ; i<3 ;i++) {

    System.out.println(bb[i]+256);
    } 还原
      

  5.   

    我是楼主:   我查了"我"字的Unicode的编码,其十六进制是6211,
       这个,跟楼上的,三个字节中的数字,有什么联系???
                                 230
                                 136
                                 145
      

  6.   

    UTF-8 是将unicode编码 根据码值大小 转换成1到4个字节 后输出
    你运行下面的程序就得到上面的字节
                      
                               char c =   (char)0x6211 ;                            b1 = (byte) ((c >> 12 & 0x0F | 0xE0)+256);
    b2 = (byte) ((c >> 6 & 0x3F | 0x80)+256);
    b3 = (byte) ((c >> 0 & 0x3F | 0x80)+256);

    System.out.println(b1+256);
    System.out.println(b2+256);
    System.out.println(b3+256);
      

  7.   

    UTF-8是变长编码,是按照下面规则来编码的UCS-2编码(16进制) UTF-8字节流(二进制)
    0000 – 007F 0xxxxxxx
    0080 – 07FF 110xxxxx10xxxxxx
    0800 – FFFF 1110xxxx10xxxxxx10xxxxxx对于“我”这个字符为 0x6211 正好是上面的第三种情况,把0x6211写成二进制,按照上面的模板依次填入x代表的位置,就出来这三个数字了建议查看编码有关的文章
      

  8.   

    to interpb(曾曾胡,深怕情多累美人!!!) UTF-8 是1~3个字节,不会有4个字节的编码情形
      

  9.   

    谢谢楼上的指正我查了一下资料呵呵 我还是没有记错U-00000000 - U-0000007F:  0xxxxxxx  
    U-00000080 - U-000007FF:  110xxxxx 10xxxxxx  
    U-00000800 - U-0000FFFF:  1110xxxx 10xxxxxx 10xxxxxx  
    U-00010000 - U-001FFFFF:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx  
     
    正常应该是这样的只是1 -- 3字节在我们的使用范围内多一点还是有可能出现四个字节的
      

  10.   

    UTF-8 使用一至四个字节的序列对编码 Unicode 代码点进行编码。U+0000 至 U+007F 使用一个字节编码,U+0080 至 U+07FF 使用两个字节,U+0800 至 U+FFFF 使用三个字节,而 U+10000 至 U+10FFFF 使用四个字节。UTF-8 设计原理为:字节值 0x00 至 0x7F 始终表示代码点 U+0000 至 U+007F(Basic Latin 字符子集,它对应 ASCII 字符集)。这些字节值永远不会表示其他代码点,这一特性使 UTF-8 可以很方便地在软件中将特殊的含义赋予某些 ASCII 字符。查了一下官方的文档
    贴出来 大家 看看 一起学习吧