您的位置:程序门 -> java -> j2se / 基础类



如何将这个码转成中文?? 急!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何将这个码转成中文?? 急!!![已结贴,结贴人:sundeveloper]
发表于:2007-02-07 14:13:58 楼主
string   tmp   =   "我 ";     //   我

这个   "我 "   字,经常某种编码后,,变成了上面那个字符串,,,
这中间,我不知道,别人是怎么编码的..我现在要把它还原成中文!!!
发表于:2007-02-07 14:41:151楼 得分:0
string.replaceall( "我 ",   "我 ");
发表于:2007-02-07 15:39:132楼 得分:0
用“某种编码”getbytes
发表于:2007-02-07 16:20:493楼 得分:0
我是楼主:
byte   data   []   =   {(byte)230,(byte)136,(byte)145};
string   ch   =   new   string(data, "utf-8 ");       //   还原成了   "我 ";

我现在通过这种方式,,还原了..
不过,不知道原因,,是怎么样将一个unicode的码的中文,,拆成三个这样的数字...
又通过这种方式,还原成了中文...

期待高人解释....
发表于:2007-02-07 17:51:234楼 得分:0
"我 "   是在utf的编码基础上进行操作得来的,
utf的格式是   “e69687”其中是3个字符的16进制的编码
而每一个char对应两位字节的utf编码,把3个字符拆分出来,求出每个char的对应的10进制的编码,我想就是楼主看到的样子了
发表于:2007-02-07 18:05:145楼 得分:15
中文   在   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);
}  

还原
发表于:2007-02-08 09:13:386楼 得分:0
我是楼主:

      我查了 "我 "字的unicode的编码,其十六进制是6211,
      这个,跟楼上的,三个字节中的数字,有什么联系???
                                                          230
                                                          136
                                                          145
发表于:2007-02-08 09:51:357楼 得分:10
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);
发表于:2007-02-08 10:32:588楼 得分:25
utf-8是变长编码,是按照下面规则来编码的

ucs-2编码(16进制) utf-8字节流(二进制)
0000   –   007f 0xxxxxxx
0080   –   07ff 110xxxxx10xxxxxx
0800   –   ffff 1110xxxx10xxxxxx10xxxxxx

对于“我”这个字符为   0x6211   正好是上面的第三种情况,把0x6211写成二进制,按照上面的模板依次填入x代表的位置,就出来这三个数字了

建议查看编码有关的文章
发表于:2007-02-08 10:35:479楼 得分:0
to   interpb(曾曾胡,深怕情多累美人!!!)  

utf-8   是1~3个字节,不会有4个字节的编码情形
发表于:2007-02-08 11:12:3110楼 得分:0
谢谢楼上的指正

我查了一下资料

呵呵   我还是没有记错

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字节在我们的使用范围内多一点

还是有可能出现四个字节的
发表于:2007-02-08 11:15:5111楼 得分:0
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   字符。

查了一下官方的文档
贴出来   大家   看看   一起学习吧
发表于:2007-02-08 11:38:1412楼 得分:0
查阅相关文章,,我已经明白了..
  这些个编码的规则..

  谢谢大家
发表于:2007-02-08 14:41:1613楼 得分:0
不错不错,是四个字节,唉,俺没有再深究下去,我们使用四个字节的太少了


快速检索

最新资讯
热门点击