Marshal.PtrToStringAnsi中文亂碼

出錯代碼:編碼

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

緣由:ip

查看內存後知道內存編碼是UTF8,Marshal不支持UTF轉換,因此必須先轉成Unicode再轉成UTF8內存

解決後的代碼:string

byte[] bytes = System.Text.Encoding.Unicode.GetBytes(Marshal.PtrToStringUni(audioOutput.psz_description));//轉成UNICODE編碼it

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

相關文章
相關標籤/搜索