Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 非托管方法中字符串形式的C垃圾数据_C#_Character Encoding_Pinvoke_Dllimport - Fatal编程技术网

C# 非托管方法中字符串形式的C垃圾数据

C# 非托管方法中字符串形式的C垃圾数据,c#,character-encoding,pinvoke,dllimport,C#,Character Encoding,Pinvoke,Dllimport,我在非托管方法周围有一个包装器: [DllImport(DLL_LOCATION, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] private static extern Boolean voGetFirmwareVersion(StringBuilder s, ref uint d); 这很好,StringBuilder中充满了汉字。幸运的是,我知道课文应该读什么: 相机0057;FPGA 0009 我得到

我在非托管方法周围有一个包装器:

[DllImport(DLL_LOCATION, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern Boolean voGetFirmwareVersion(StringBuilder s, ref uint d);
这很好,StringBuilder中充满了汉字。幸运的是,我知道课文应该读什么:

相机0057;FPGA 0009

我得到的是:

慃敭慲〠㔰㬷䘠䝐⁁〰㤰猀״״譗珉譞珉쬂☐״״造琞\u085cʩ״

我已尝试将DLLImport标志中的字符集更改为所有组合,并尝试更改返回的字符串编码,但均无效。帮我上网吧

编辑:我正在调用的dll属于我当前正在编程的设备。所有其他功能都在工作,但上面提到的功能只会给我汉字

再次编辑:下面是我用来调用上面的方法签名的代码:

private string getFirmware()
    {            
        uint r = 31;
        StringBuilder sb = new StringBuilder(31);
        bool result = voGetFirmwareVersion(sb,  ref r);

        if(!result)
        {
            MessageBox.Show("Error Getting Firmware");
        }     

        return sb.ToString();          
    }

结果是将字符集设置为None。由于首先没有它,它默认为Unicode。我原以为不会有

你想调用哪个dll?问题用dll信息编辑请提供一个更新的代码,我不能提供一个可验证的示例,除非你碰巧有一个访问OCR640N设备的handyThanks for the heads up David,在以前的帖子中我被建议不要使用Ansi。这完全有效。