当前位置: 代码迷 >> C# >> 请问一个莫名其妙的有关问题
  详细解决方案

请问一个莫名其妙的有关问题

热度:106   发布时间:2016-05-05 04:47:56.0
请教一个莫名其妙的问题
             string s1 = "";
             string s2 = "〇";
              Console.WriteLine(s1.Equals(s2, StringComparison.CurrentCulture));

这段代码在C#中执行时,在Framework版本从2.0到3.5时,打印都是True,在4.0时打印为False;
但是下面这段代码:
            int len1 = test1.Length;
            int len2 = test2.Length;
            Console.WriteLine("字符串 三〇一医院  的长度为:"+test1.Length);
            Console.WriteLine("字符串 三一医院  的长度为:" + test2.Length);

在Framework版本从2.0到4.0时,都是输出len1=5,len2=4.

〇 作为一个汉字,95年就已经被GBK字符集收录了。

有老师帮分析下,为什么吗?就因为枚举类型为CurrentCulture的原因?
表示感谢先。 

小弟没有积分,对不起了呀!
------解决思路----------------------
查了下,这应该是.net 2.0的时候对unicode标准支持的还不完善,在按区域比较的时候把这个U+3007当作了一个可以忽略的字符。4.0对unicode标准支持的好了,真正按照unicode定义的可忽略字符来忽略。比如在.net 4.0上,按区域比较""和"\u00AD"是相等的,但是在2.0上它们却不相等。