字符集是一种规范,编码是规范的具体实现方式。字符集包括Unicode(统一字符集)和ANSI(本地字符集,包括GB2312字符集、BIG5字符集等)等,Unicode字符集的编码方式包括Unicode(utf-16)、utf-8、utf-32等。vc中char代表了多字节编码方式即utf-8,wchar_t代表宽字节编码方式即utf-16。C#调用多字节C++ dll获取字符串的时候需要进行编码转换以获取正确字符串,C#将字符串认为是Unicode编码,而实际上是utf-8编码,可以如下转换
string strText = xxxx;//从C++dll获取的字符串
var orinBytes = Encoding.Unicode.GetBytes(strText);
string tranStr = Encoding.UTF8.GetString(orinBytes);