我有以下代码:
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。
答案 0 :(得分:5)
在上壳体之后,微秒仍然是μSEC。将其升级为MSEC将致命地改变其含义。这就是为什么字形有两个代码点。
答案 1 :(得分:4)
某些小写字母具有相同的大写字母。抱歉,这就是Unicode的定义方式。
例如,正如您在官方UnicodeData.txt中看到的那样,U+0069 (i)
和U+0131 (ı)
都有U+0049 (I)
大写。
你遇到的确切问题是什么?也许我们可以帮忙。