.net micro(μ)希腊字母大写问题

时间:2012-03-08 11:32:24

标签: c# uppercase

我有以下代码:

 string firstMicro = "aa \u00b5 bb";
 string secondMicro = "aa \u03bc bb";

 Assert.IsFalse(firstMicro == secondMicro);

 string upperFirstMicro = firstMicro.ToUpper();
 string upperSecondMicro = secondMicro.ToUpper();

 Assert.IsFalse(upperFirstMicro == upperSecondMicro);

在我的情况下,第一次测试通过(显然,两个字符串都不同),但在第二种情况下,测试失败,因为两个文本都相同($ AA M BB)。我承认在其中一个案例中我应该使用CultureInfo - 但至少在第一种情况下(来自ASCII代码的微型符号)应该保持不变...有人可以帮助我理解为什么会发生这种情况吗?

显然,这里有另一个帖子 - How to correctly uppercase Greek words in .NET?,但没有明显的答案......

感谢。 d。

2 个答案:

答案 0 :(得分:5)

在上壳体之后,微秒仍然是μSEC。将其升级为MSEC将致命地改变其含义。这就是为什么字形有两个代码点。

答案 1 :(得分:4)

某些小写字母具有相同的大写字母。抱歉,这就是Unicode的定义方式。

例如,正如您在官方UnicodeData.txt中看到的那样,U+0069 (i)U+0131 (ı)都有U+0049 (I)大写。

你遇到的确切问题是什么?也许我们可以帮忙。