NHunspell对非ANSI(?)字符的建议

时间:2016-02-15 17:10:02

标签: unicode marshalling nhunspell

我按照以下方式尝试了NHunspell NuGet包:

var hunspell = new NHunspell.Hunspell(@"AffPath", @"DicPath");
hunspell.Add("Upadeṣasāhasrī");

var suggestions = hunspell.Suggest("Upadesasahasri");
Console.WriteLine(suggestions.First());

不幸的是,这个建议是“Upade?asahasri”。 “带有点下面的s”作为问号返回,而“a with macron”和“i with macron”分别作为a和i返回。

据我所知,本机Hunspell DLL已完全启用unicode。因此,我认为NHunspell C#层会破坏某些东西。 source code看起来像这样:

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。然而,它显然不起作用。有没有人有建议(双关语)?

谢谢,托马斯

0 个答案:

没有答案