我正在帮助某人编写一些代码,以不区分大小写的方式比较UTF-8字符串。他们使用的方案是将字符串大写,然后进行比较。输入字符串都可以适合255字节的数组。类似地,输出字符串必须符合255字节数组。
我不是UTF-8或Unicode专家,但我认为这个方案对所有字符串都不起作用。我的理解是,无论是下壳还是上壳,UTF-8字符串都会导致输出字符串更长(字节数组),因此更改案例可能不是解决此问题的最佳方法。我试图通过提供一些不适合这种设计的字符串来证明这种困难。
例如,将字符U + 0587的字符串重复100次。 U + 0587采用UTF-8中的两个字节,因此字符串的字节数组的总长度为200字节(暂时忽略尾随的空值)。但是,如果该字符串是大写的,则它变为U + 0535 U + 0552,并且每个字符串占用两个字节,总共4个字节。 200字节数组现在是400字节,并且不能存储在可用的有限空间中。
所以这就是我的问题:我给出了一个小写字符的例子,当大写时需要更多空间来存储。是否有任何大写字符的示例在小写时需要更多空间来存储?在这种情况下,语言环境总是en_US.UTF-8。
感谢您的帮助。
答案 0 :(得分:0)
是。我的环境中的例子:
U+023A Ⱥ U+023E Ⱦ
有几个相关因素可能导致变异。你已经指出了一个:
这些不是固定目标,因为我们可以预期会有未来的版本,并且会有用户使用它们。
归根结底,这取决于你的环境和实际目的。