当变音符号前置并且不重合表单时,如何将CodePage规范化为Unicode表单C.

时间:2010-08-12 19:16:46

标签: unicode normalization diacritics unicode-normalization

我希望能够说“通过强制变音符号加入它们的组合形式来规范化这个字符串”。

详细说明:
我的代码是用C#开发的,但我不相信这个问题是特定于语言的。

我的数据有两个问题(1)变音符号位于此数据的基本字符之前(它需要遵循Unicode格式D或KD中的基本字符)。 (2)我的数据中的重音变音是希腊语Tonos(U + 0384),但需要结合形式(U + 0301)才能归一化。

我想以编程方式执行此操作。我认为这种类型的操作应该是众所周知的,但我没有在C#全球化方法中找到支持(有规范化方法,但是没有办法强制将变音符号加入到它们的组合形式中)。

1 个答案:

答案 0 :(得分:1)

我不认为C#全球化方法可以帮到你。你指出的问题是U + 0384不是一个组合字符。它本身就是一个角色。这也可以从相容性分解(To U + 0020 U + 0301)中看出。数据集很可能来自一个源,它会将tonos显示为下一个字符的变音符号。根据unicode规范,这不是“正确的”。因此,您必须自己转换数据。我与撇号遇到了类似的问题;有时候应用程序正在使用正确的引号。

数据转换并不难,我相信你可以编写代码。 我会有一个有状态的转换器并通过流式传输数据。当检测到U + 0384时,它不会被模糊。你定义到“tonos”状态并在NEXT字符后发出U + 0301。是要处理的错误条件(U + 0384运行,“tonos”状态下的数据结束)。 可以使用通常的API对此数据进行标准化。 祝你好运。