我有一个关于字符串规范化的问题,它已经回答了,但问题是,我不能正确地规范需要3个键击的韩文字符
随着输入“ㅁㅜㄷ”(来自击键“ane”),它出来“무ㄷ”而不是“묻”。
使用输入“ㅌㅐㅇ”(来自击键“xod”),它会显示“태ㅇ”而不是“탱”。这是一个错误(Windows API)?
这是迪安先生的回答,虽然它的工作起初我给了我的例子......它不适用于我上面引用的那个。
如果您使用的是.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 +。 You need the "Microsoft Internationalized Domain Name (IDN) Mitigation APIs"如果你想在XP上使用它(为什么它是在国际化域名下载,我不明白...)
请注意,这些方法实际上都不需要使用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版本?
打字탱适合我;你是否正在讨论一个专门用编程方式规范化的问题?如果是这样,你的第一段似乎意味着其他情况。 – 2010-06-29 01:58:15
以编程方式进行规范化。我指的是在我的编辑框中输入(我得到我的输入)。好的,我会试着更清楚地重述它。 – Dian 2010-06-29 02:12:22