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上它们却不相等。