嗯……啊……
我可不可以问个很简单的问题~~不要拿鸡蛋丢我……
请问:什么是unicode ??
………………

解决方案 »

  1.   

    统一码(Unicode)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
      

  2.   

    如果有大于0x80的则表示是Unicode
      

  3.   

    楼主,你可以看看Properties类的saveConvert()方法的源代码,我想会对你有用
      

  4.   

    帮你顶ztJava中文处理学习笔记——Hello Unicode
    http://www.chedong.com/tech/hello_unicode.html
      

  5.   

    我是楼主,谢谢各位。
    再明确一下,上面说的存储格式,如果是unicode,那么要按照高8位在后,低8位在前的规则存入块中。
      

  6.   

    楼主的问题太搞笑了一个byte是8 bit,说白了你就是想从一个512 * 8的bit stream里去判断到底我该用8bit呢,还是16bit,蛇头咬了蛇尾..........道亦道,道亦非道......逻辑上就是错误的,措辞强硬了点,抱歉
      

  7.   

    应该用 stonegump(龙飞虎)  的方法就行了
     
      

  8.   

    去判断到底我该用8bit呢,还是16bit楼主,你事先都知道是不是unicode了,还判断什么呢,自己判断自己知道的事情
      

  9.   

    另外,按照stonegump(龙飞虎) 的方法也未必可行。举个例子:
    “学”的unicode是\u5B66 ,他存在上述块中应该是… 66 5B …,那么两个字节都没有超过0x80,按照stonegump(龙飞虎)的方法,66 5B会被解码成f[ 。
    实际上超过0x80则为unicode这一规则是用在utf-8编码中的,这里不适合。
      

  10.   

    我想问楼主,‘A’这个字符你说是Ascii还是Uncode?
      

  11.   

    楼上,是这样的:
    'A'在存入上述块结构时要根据情况来定是采用单字节还是双字节。如果'A'字符往后的511个字符全部都是英文字母和符号,那么在存入时采用单字节即41。如果其后包含1个双字节的符号(例如汉字),哪怕只有一个,那么'A'在存入块时也使用双字节,即 41 00。
    因此在读取这些信息时就出现了上面提到的问题。
      

  12.   

    保存为Unicode格式
    再用UE看一看就知道了
      

  13.   

    你事先不知道这个bit stream是什么编码.....如果有两串字符,用unicode和ascii编码出来结果相同,如何知道是何种编码;再说了,如何知道一串bit stream一定是unicode和ascii中的一种??如果观点成立,那就是说给我一串bit stream,不管是什么编码的,我都能知道,而不仅仅对于unicode和ASCII,是这样吗??毕竟不仅这两种编码而已
      

  14.   

    问题已经解决,通过将所有512个字节的值与0x80对比判断该块是使用的单字节编码还是双字节。如果有1个字节的值大于0x80,则说明肯定有一个字符是双字节字符,那么按照上面的叙述的规则,如果存在一个双字节字符,则该字符所在块全部采用双字节存放,因此该块按照双字节解码;反之,如果所有512字节的值都小于0x80,则采用单字节解码。另外,楼上兄弟,脱离了实际环境的假设毫无意义,不要为畏惧困难而费劲心力地找出天大的借口,找出规律想出办法解决问题才是关键所在。谨记!感谢所有跟贴的弟兄,明日结贴。
      

  15.   

    你都假设了里面一定存在大于ASCII范围的字存在嘛,换句话说,你还是事先知道这个要么是ASCII或者UNICODE了,而且里面一定要存在有超过ASCII范围的字存在;如果没有大于0x80的字节,也不代表就是ASCII,对吧;我只是想说,从bit stream去判断编码从逻辑上是反的,如果你能保证一定有其他文字存在当然也可以解决,但只是特殊情况下的特殊手段;如果遇到的是ASCII范围内的字用UNICODE编码,这个方法就出错了...
      

  16.   

    何况你遇到两个小于0x80的byte也不代表他们不是unicode, 0x55 0x55合起来是21845,足够用来表示一个中文了吧!可是它们没有一个大于0x80,unix里早就有判断一串字符是否unicode的方法了,用到统计和猜测等各种方法,但是还是非科学的,不能保证一定判断正确,你判断是否大于0x80和UNIX实现的方法比起来太小儿科了
      

  17.   

    起码这种方法是不行的,unix的方法比这个保险,但是还是非科学的....成功率高一些而已.....
      

  18.   

    可惜还是有人被误导,认为超过128的"一个"byte"就是unicode,快结帖吧
      

  19.   

    多谢你提出“宝贵”意见,你能拿出个所谓very科学的判别方法吗?如果有,我另开200分贴送你。没有的话我还要解决实际问题,总不能等到你这所谓very科学的的方法出来后我再编?所以你还是恭喜我解决了问题才是,这样才对的住你那所得的1分。嘿嘿~