我有一個關於字符串規範化的問題,它已經回答了,但問題是,我不能正確地規範需要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