У меня был вопрос о нормализации строки, и на него уже был дан ответ, но проблема в том, что я не могу правильно нормализовать корейские символы, требующие 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 +. Вам необходимо установить «API-интерфейсы для смягчения последствий использования интернационализированных доменных имен Microsoft» , если вы хотите использовать его в XP (почему он находится в загрузке 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 вы используете?