Предложения NHunspell для не-ANSI (?) Символов
Я попробовал пакет NHunspell NuGet следующим образом:
var hunspell = new NHunspell.Hunspell(@"AffPath", @"DicPath");
hunspell.Add("Upadeṣasāhasrī");
var suggestions = hunspell.Suggest("Upadesasahasri");
Console.WriteLine(suggestions.First());
К сожалению, предложение гласит: "Упадэ? Асахасри". "S с точкой ниже" возвращается как вопросительный знак, в то время как "a с макроном" и "i с макроном" возвращаются как a и i соответственно.
Насколько я знаю, нативная библиотека Hunspell полностью поддерживает Unicode. Поэтому я полагаю, что слой NHunspell C# что-то ломает. Исходный код выглядит так:
internal delegate IntPtr HunspellSuggestDelegate(IntPtr handle, [MarshalAs(UnmanagedType.LPWStr)] string word);
IntPtr strings = MarshalHunspellDll.HunspellSuggest(this.unmanagedHandle, word);
int stringCount = 0;
IntPtr currentString = Marshal.ReadIntPtr(strings, stringCount * IntPtr.Size);
while (currentString != IntPtr.Zero)
{
++stringCount;
result.Add(Marshal.PtrToStringUni(currentString));
currentString = Marshal.ReadIntPtr(strings, stringCount * IntPtr.Size);
}
Я вообще не эксперт по сортировке, но UnmanagedType.LPWStr и Marshal.PtrToStringUni, похоже, учитывают Unicode. Тем не менее, это явно не работает. У кого-нибудь есть предложение (каламбур)?
Спасибо Томас