Jan*_*ski 2 c c# unicode character-encoding
谷歌没有帮助我,比如我想在这里写帖子.我在C#和C函数(在dll中)有Unicode字符串,它需要char(ANSI)*.我试着去做
string tmp = "ala ma kota";
unsafe
{
    fixed (byte* data = &tmp.ToCharArray()[0])
    {
        some_function(data);
    }
}
但我没有编码就无法直接转换.我尝试使用Encode类但没有任何效果.我知道,some_function需要用char指针调用.它指向字节数组的位置.
您不需要自己明确地执行此操作.
相反,使用P/Invoke声明C方法以接受类型的参数string.
然后添加到P/Invoke声明:
 [DllImport("YourDllName.dll", CharSet=CharSet.Ansi)]
然后,编组器会将字符串转换为ANSI.
请注意,我假设该字符串被传递给被调用函数,因此该参数不是用于从被调用函数返回新字符串的指针.
有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.charset.aspx
事实上,默认是CharSet.Ansi这样你可能只需要声明参数string而不是byte*(或者你现在使用的任何东西).