Marshal.PtrToStringAnsi中文乱码_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Marshal.PtrToStringAnsi中文乱码

Marshal.PtrToStringAnsi中文乱码

 2017/11/16 18:18:05  wangjinming  程序员俱乐部  我要评论(0)
  • 摘要:出错代码:stringdec=Marshal.PtrToStringAnsi(audioOutput.psz_description);//输出鎵0鍣?(RealtekHighDefinitionAudio)原因:查看内存后知道内存编码是UTF8,Marshal不支持UTF转换,所以必须先转成Unicode再转成UTF8解决后的代码:byte[]bytes=System.Text.Encoding.Unicode.GetBytes(Marshal.PtrToStringUni
  • 标签:文乱码

出错代码:

string dec = Marshal.PtrToStringAnsi(audioOutput.psz_description);//输出 鎵0鍣?(Realtek High Definition Audio)

原因:

查看内存后知道内存编码是UTF8,Marshal不支持UTF转换,所以必须先转成Unicode再转成UTF8

解决后的代码:

byte[] bytes = System.Text.Encoding.Unicode.GetBytes(Marshal.PtrToStringUni(audioOutput.psz_description));//转成UNICODE编码

string dec = System.Text.Encoding.UTF8.GetString(bytes);//再转成UTF8

发表评论
用户名: 匿名