代码之家  ›  专栏  ›  技术社区  ›  Scott Wisniewski

Windows不变文化之谜

  •  2
  • Scott Wisniewski  · 技术社区  · 15 年前

    我有一个关于windows不变文化的问题。

    是否存在任何一对字符c1和c2,以便:

    下(c1,不变)= 下(c2,不变)

    但是

    下(c1,不变)= 不变的 下(c2,不变)

    理想情况下,我希望这样做,而不必将我所有的比较逻辑从数据库中拉到我的应用程序中。

    然而,除了windows用来比较文件名的事实之外,我真的不知道不变区域性会做什么样的映射。

    我想知道这个方案是否可能导致误报(或漏报)。

    也就是说,我是否可以使用latin-general-1不区分大小写的SQL server排序规则生成相互比较相等的字符(以前使用不变区域性使用小写),但在不变区域性下不进行相互比较相等?

    注:

    我知道在Windows上可能有区分大小写的文件。但是,我不需要支持这些场景。

    4 回复  |  直到 15 年前
        1
  •  3
  •   Community CDub    4 年前

    win32-file-name-comparison

    这是我不久前问的。,

    我在下一页找到了一个间接链接:

    http://msdn.microsoft.com/en-us/library/ms973919.aspx

    它建议在不变的大写字母之后使用顺序比较,这是模仿文件系统的最佳方式。

    有人知道这有什么问题吗?

        2
  •  0
  •   Mitch Wheat    15 年前

    为什么不把文件名转换成ASCII码?在您的情况下,文件名是否可以包含非ascii字符?

        3
  •  0
  •   Aaron Watters    15 年前

        4
  •  0
  •   Windows programmer    15 年前

    “但是,除了windows用来比较文件名之外,我真的不知道不变区域性是做什么样的映射的。”

    我不认为Windows在比较文件名时使用了不变的区域性。例如,如果我的文化背景是英语,那么我可以将两个单独的文件命名为turkish和TURK°SH,但是如果某人的文化背景是turkish,那么我希望Windows不会让他们这么做。