【问题标题】:How to normalize CodePage to Unicode Form C when diacritic precedes and accent not combining form当变音符号在前面并且重音不组合形式时如何将 CodePage 规范化为 Unicode Form C
【发布时间】:2011-03-29 02:57:16
【问题描述】:

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

详情:
我的代码是用 C# 开发的,但我不认为这个问题是特定于语言的。

我的数据有两个问题 (1) 变音符号在此数据中的基本字符之前(它需要在 Unicode 形式 D 或 KD 中的基本字符之后)。 (2) 我的数据中的重音变音符号是希腊语 Tonos (U+0384) 但需要组合形式 (U+0301) 才能进行规范化。

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

【问题讨论】:

    标签: unicode normalization diacritics unicode-normalization


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 2018-03-05
      • 1970-01-01
      相关资源
      最近更新 更多