【问题标题】:Unicode versions in .NET.NET 中的 Unicode 版本
【发布时间】:2009-07-16 02:31:12
【问题描述】:

CharUnicodeInfo.GetUnicodeCategory 的文档说:

请注意,当将特定字符作为参数传递时,CharUnicodeInfo.GetUnicodeCategory 并不总是返回与 Char.GetUnicodeCategory 方法相同的 UnicodeCategory 值。

CharUnicodeInfo.GetUnicodeCategory 方法旨在反映当前版本的 Unicode 标准。相反,尽管Char.GetUnicodeCategory 方法通常反映当前版本的 Unicode 标准,但它可能会返回基于以前版本标准的字符类别,或者它可能返回与当前标准不同的类别以保持向后兼容性.

那么,CharUnicodeInfo.GetUnicodeCategoryChar.GetUnicodeCategory 在哪个版本的 .NET Framework 中体现了哪个版本的 Unicode 标准?

【问题讨论】:

    标签: c# .net vb.net string unicode


    【解决方案1】:

    String Class 的文档说明了 .NET Framework 4 和 4.5 符合的 Unicode 版本:

    .NET Framework 4

    在 .NET Framework 4 中,排序、大小写、规范化和 Unicode 字符信息与 Windows 7 同步,符合 Unicode 5.1 标准。

    .NET Framework 4.5

    在 Windows 8 操作系统上运行的 .NET Framework 4.5 中,排序、大小写、规范化和 Unicode 字符信息符合 Unicode 6.0 标准。在其他操作系统上,它符合 Unicode 5.0 标准。

    【讨论】:

    • 我仍然对 .NET Framework 的早期版本所遵循的 Unicode 标准感兴趣。
    • .net 3.5 - Unicode 5.0 - msdn.microsoft.com/en-us/library/…
    • .net 1.1 - Unicode 3.1 - msdn.microsoft.com/en-us/library/…
    • @Tom:同一页面声称 .NET 4.5 的 Unicode 5.0。这显然只对了一半。该文本似乎仅适用于 Unicode 字符类别列表(在 Unicode 版本之间可能不会经常更改),而不适用于 Windows/.NET Framework 使用的 Unicode 版本。
    • 谢谢。我编写了一些测试来确认 .net 3.5 确实不支持 Windows 7 上的 Unicode 5.0。我还测试了 Windows 7 上的 .net 4.0 支持 5.1 但不支持 5.2。通过支持,我的意思是 CharUnicodeInfo.GetUnicodeCategory 返回特定 Unicode 版本的预期值。
    【解决方案2】:

    据我所知,没有存储 unicode 版本。字符查找是通过将字符信息存储在 mscorlib.dll 中名为“charinfo.nlp”的嵌入式资源中来实现的,这在内部用作查找表。此查找表数据的标题上有一个“版本”属性,但在二进制数据中它是“0”(偏移量 0x20),所以我不确定那是什么版本,或者它是否没有实现。

    【讨论】:

      【解决方案3】:

      作为Michael Kaplan states:

      The Unicode 发布的版本 财团。

      因为真的没有确定的 回答这个非常不具体的问题 问题。答案总是取决于 完全在[通常是一个]特定的 问的人的问题是 寻找答案

      所以最后礼貌的回答是 IT 取决于你的意思。你能 详细一点?

      【讨论】:

      • "Unicode 属性...取决于产品版本。虽然 Whidbey 是 4.1 而不是 3.2,Vista 尚未发布,但最新的 CTP 是 4.1。" 谢谢链接,这就是我要找的。​​span>
      【解决方案4】:

      This 页面有一条来自微软的 Shawn Steele 的 wiki 评论,我认为这应该可以解释为什么首选使用 CharUnicodeInfo。

      【讨论】:

      • 但这就是它的结果。当 Unicode 版本无法正常工作时,它有什么影响。您是否尝试使用示例字符(非英语)来找出差异?
      • 例如,字符 '\u0C58' (fileformat.info/info/unicode/char/0c58/index.htm) 是在 Unicode 版本 5.1.0 中添加的,其类别为 字母、其他。 “CharUnicodeInfo.GetUnicodeCategory 方法旨在反映当前版本的 Unicode 标准。”但是CharUnicodeInfo.GetUnicodeCategory 返回UnicodeCategory.OtherNotAssigned。所以它反映当前的 Unicode 版本 5.1.0。它反映了哪个版本
      • 你期望它返回什么(如果它返回 OtherNotAssigned)?
      • 我发现这个页面说 .net framework 1.1/2.0 支持 Unicode 版本 3.1(链接:eggheadcafe.com/forumarchives/NETcsharp/Aug2005/…)。请原谅我对这个话题的无知。
      • devio 答案中的链接说 Whidbey(即 Visual Studio 2005)是 4.1。 VS2005 与 .NET Framework 2.0 一起发布。所以,两者之一(3.1或4.1)一定是错误的......
      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多