Delphi XE AnsiStrings与逃避组合变音符号

Erw*_*tza 5 delphi unicode diacritics delphi-xe

将Delphi XE AnsiString转换为包含像"Fu\u0308rst"这样的变音符号转换为frienly WideString"Fürst"的最佳方法是什么?

我知道这并不总是可以用于所有组合,但是应该支持常见的Latin块而不用自己构建愚蠢的转换表.我想解决方案可以在新的Characters单元中找到,但是我没有得到它.

Rod*_*ddy 4

我认为您需要执行Unicode 规范化。在你的绳子上。

\n\n

我不知道 Delphi XE RTL 中是否有特定的调用来执行此操作,但 WinAPI 调用NormalizeString应该可以帮助您,使用模式 NormalizationKC:

\n\n
\n

标准化KC

\n\n

Unicode 规范化形式 KC,兼容性组合。将每个基本字符和组合字符转换为规范的预组合字符,并将所有兼容字符转换为其等效字符。例如,连字 \xef\xac\x81 变为 f + i;类似地,A + \xc2\xa8 + \xef\xac\x81 + n 变为 \xc3\x84 + f + i + n。

\n
\n