如何将字符转换为其完整的Unicode名称?

12

我需要一个能够在字符(例如'α')和它的完整Unicode名称(例如"GREEK SMALL LETTER ALPHA")之间进行双向转换的函数。

我想到的解决方案是在可用的官方Unicode标准中查找,该标准可以在线获取:http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt,或者,在此之前可能需要将其转换为适当的集合以提高查找性能。

是否有更简单的方法来进行这些转换? 我希望使用C#来解决问题,但也欢迎其他语言的解决方案,只要它们可以适应C# / .NET。谢谢!


你提供的解决方案听起来很好,说实话。文件格式看起来相当简单,我认为框架中没有其他东西了。 - Jon Skeet
你指向的那个链接只有大约一百万个字符,可以轻松地放入字典中。这些字符应该是唯一的,因此可以将其用作字典中的键。至于描述——如果它也是唯一的,可以包括第二个反向字典以提高速度,但这会使内存翻倍。 - paparazzo
@Blam “只喜欢前100万”(更准确地说是1114109)就是全部 - R. Martinho Fernandes
1个回答

0

如果您不想在内存中保留Unicode名称表,只需准备文本文件,其中Unicode值的偏移量乘以最大Unicode长度名称将指向Unicode名称。对于最大4字节长度,它不会超过几兆字节。如果您希望有更紧凑的实现,则可以将文件中的偏移地址分组到文件开头的Unicode名称中,这些名称由Unicode值索引,然后享受更紧凑的名称表。但是您必须准备这样的文件,尽管这并不困难。


要求是双向的。 - paparazzo
是的,你说得对,我们可以创建一个文件,其中索引等于Unicode名称的哈希值 :-)。虽然问题评论中引用的解决方案使用了现成的字典库,这当然比从头开始制作自行车要好。但我总是喜欢数据结构设计的艺术。 - Asaf Sh.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接