char c = 45;
char d = 8211;
System.out.println(c);
System.out.println(d);显示的结果是同一个字符:'–'  这是怎么回事啊?
我在进行赫夫曼编码的练习,理论上讲这完全是同一个字符嘛,但是 (c==d) 的结果却是false,导致在赫夫曼编码中,被编为不同的码。
麻烦高手给解释一下吧!!!!!!!!!!

解决方案 »

  1.   


    !!!!!!!!!!!!
    经您一提醒,我还真觉得他俩不一般高,能差个1像素............
    为什么会出现这种情况啊?????java中处理这个还算方便,要是c语言中,char的范围是1个字节,他去读取8211这个字符,会出现什么后果呢???????
      

  2.   

    在eclipse里,似乎完全一样
    在notepad++中,一个高一个低。
    又放到记事本里看了看,一个寛一个窄。
    不同的编辑器处理起来不太一样啊
      

  3.   

    这个不是两个相同的字符吧,一个是中文,一个是英文,也就是,一个用ascii编码,一个用的是unicode编码,怎么能是一个字符?
      

  4.   

    在我这里看怎么一般高啊?
    还有楼上的,在C中如果char去读取8211这个字符很有可能是内存泄露吧。
      

  5.   

    C语言不晓得啊,单纯就你上面四行代码来说,两个肯定不是同一个字符
    java里的char是2字节16bit的无符号整数的。所以肯定是不同了
      

  6.   

    看似是一个字符..     我用eclipse调试了一下.  一个窄  一个宽..高低是一样的.  第一个窄  第二个宽.asc码 8211  为什么要这么大的.  最大只到255的. 
      

  7.   

    unicode 字符集 每一个值都代表唯一的字符。不需要怀疑。
      

  8.   

    这怎么可能会是一个字符呢,晕啊,连编码都是不一样的。45 即 Unicode 字符 U+002D
    Unicode 对这个字符的字义是:HYPHEN-MINUS8211 即 Unicode 字符 U+2013
    Unicode 对这个字符的字义是:EN DASH
      

  9.   


    只是像而已罢了!Unicode 字符中有很多看上去一样的字符。
      

  10.   

    Unicode 中字符的定义,或者说叫做什么字符,可以看看这个:http://www.unicode.org/Public/UNIDATA/UnicodeData.txtUnicode 组织并不是简简单地为某一个字符分配一个编码,他还得制定这个字符所有的字符元数据。
      

  11.   

    Unicode  那些标准或协议的制订者 真是可望不可及