我有一个关于 Windows 不变文化的问题。
简而言之,我的问题是:
是否存在任何一对字符 c1 和 c2 使得:
较低(c1,不变)=拉丁通用 较低(c2,不变)
但
较低(c1,不变)!=不变 较低(c2,不变)
背景:
我需要在 SQL Server Compact 中存储一个不变的小写字符串(表示文件名),它不支持 Windows 不变排序规则。
理想情况下,我想这样做,而不必将我所有的比较逻辑从数据库中提取到我的应用程序中。
我解决这个问题的想法是存储所有文件名的 2 个版本:一个用于向客户显示数据,另一个用于执行比较。在将比较列存储到数据库之前,将使用 windows 不变的语言环境将其转换为小写。
但是,我真的不知道不变文化做了什么样的映射,除了 Windows 用于比较文件名的事实。
我想知道是否有可能因为这个方案而得到误报(或误报)。
也就是说,我是否可以使用 latin-general-1 不区分大小写的 SQL 服务器排序规则生成彼此比较相等的字符(以前使用不变区域性小写),但在不变区域性下不比较彼此相等?
如果发生这种情况,那么我的应用程序可能会认为 2 个 Windows 认为不同的文件是相同的。这最终可能导致数据丢失。
笔记:
我知道在 Windows 上可能有区分大小写的文件。但是,我不需要支持这些场景。