出錯代碼:編碼
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