3

我有一个关于字符串规范化的问题,它已经得到了回答,但问题是,我无法正确规范需要 3 次击键
的韩文字符输入“ㅁㅜㄷ”(来自击键“ane”),它出现“무ㄷ”而不是“묻”。
输入“ㅌㅐㅇ”(来自击键“xod”),它会输出“태ㅇ”而不是“탱”。

这是迪恩先生的回答,虽然它适用于我最初给出的例子……但它不适用于我上面引用的例子。

如果您使用的是 .NET,则以下内容将起作用:

var s = "ㅌㅐㅇ";
s = s.Normalize(NormalizationForm.FormKC);

在本机 Win32 中,对应的调用是NormalizeString

wchar_t *input = "ㅌㅐㅇ";
wchar_t output[100];
NormalizeString(NormalizationKC, input, -1, output, 100);

NormalizeString 仅在 Windows Vista+ 中可用。如果你想在 XP 上使用它,你需要安装“Microsoft Internationalized Domain Name (IDN) Mitigation APIs”(为什么它在 IDN 下载中,我不明白......)

请注意,这些方法实际上都不需要使用 IME - 无论您是否安装了韩语 IME,它们都可以工作。

这是我在 delphi 中使用的代码(使用 XP):

      var  buf: array [0..20] of char;
      temporary: PWideChar;
      const NORMALIZATIONKC=5;
      ...
      temporary:='ㅌㅐㅇ';
      NormalizeString(NORMALIZATIONKC , temporary, -1, buf, 20);
      showmessage(buf);

这是一个错误吗?我的代码中有什么不正确的地方吗?代码是否在您的计算机上正确运行?用什么语言?你用的是什么windows版本?

4

1 回答 1

2
于 2010-06-29T08:55:35.400 回答