这主要是一个我只是很好奇的理论问题。 (我没有试图通过编码它自己或任何东西来做到这一点,我不是在重新发明轮子。)如何在Unicode中将字符串设置为大写/小写?
我的问题是大写/小写表格的等效性如何适用于Unicode。例如,如果我必须使用ASCII来做这件事,我会选择一个角色,如果它与[a-z]范围一起下降,我会总结A和a之间的差异。
如果它不在这个范围内,我会为10个左右重音字符加上一个小等价表。 (或者,我可以只有一个完整的等值数组,256条目,其中大部分将与输入相同)
但是,我猜测有更好的方式来指定Unicode中的等价性,给定有成千上万的角色,并且从理论上讲,可以添加一种新的语言或一组角色(并且我期望在发生这种情况时您不需要修补窗口)。
Windows对每个字符都有一个巨大的硬编码等价表吗?或者这是如何实施的?
一个相关的问题是SQL Server如何实现基于Unicode的重音不敏感和不区分大小写的查询。它是否有一个内部表格,告诉它它和E都等于“e”?
在比较字符串时听起来不太快。
它如何快速访问索引?它是否已将索引值转换为其“基本”字符,与该字段的整理对应?
有没有人知道这些东西的内部?
谢谢!
我希望如果他们给unicode添加了一个新的字符集,那么你需要补丁窗口,但是这将是一个非常低优先级的补丁,因为最初没有人会使用这些字符。 – 2008-11-18 02:40:03
“为10个左右重音字符加上一个小等价表加上 - ” - 你必须明白,“小”意味着大约100倍于你认为的意思。 – 2008-11-18 03:30:54