2011-10-23 51 views
2

许多编码的Unicode字符序列具有相同的视觉表示和相同的计算含义。如何比较Unicode字符串,使看起来相同的字符串比较相同?

N个字符可以被编码有两种方式:

U+00F1: ñ (LATIN SMALL LETTER N WITH TIDLE) 

或:

U+006E: n (LATIN SMALL LETTER N) 
U+0303: ~ (COMBINING TILDE) 

这产生了显示为N 10个不同的字节序列:

U+00F1 in UTF-8, UTF-16LE, UTF-16BE, UTF-32BE, UTF32-LE 
U+006E followed by U+0303 UTF-8, UTF-16LE, UTF-16BE, UTF-32BE, UTF32-LE 

是否有任何直接比较Unicode字符串的方式(我很满意已解码的unicode字符各种UTF表示),并发现它们是相同的?也就是说,我想告诉我U + 00F1与U + 0303相同U + 006E

谢谢。

+0

您使用的平台是? –

+0

我很高兴你不会问有关截然不同的字符,例如连字符与连字符;这可能是一个更难的问题。 –

+0

哦,这是我的下一个问题! (开玩笑)。是的,我知道这是一个更难的问题。你基本上需要渲染文本并进行图像处理。 – vy32

回答

4

该过程被称为正常化,由任何体面的Unicode库支持。 Backgrounder is here