MFC调用VLC库播放中文路径导致崩溃的问题、Unicode转UTF8编码

⌚Time: 2022-08-31 19:55:02

👨‍💻Author: Jack Ge

MFC中直接将中文路径从CString转换为char字符串,并播放导致崩溃

是字符编码的问题,程序使用的是unicode编码而vlc使用 的是utf-8编码

解决方法:

通过以下函数直接将中文路径CString转换为utf8编码的char*字符串,并使用vlc播放此路径


char* UniToUTF8(CString strUnicode)

{

    USES_CONVERSION;

    LPWSTR pwStr=new wchar_t[strUnicode.GetLength()+1];

    wcscpy(pwStr,T2W((LPTSTR)(LPCTSTR)strUnicode));

    int ilen = WideCharToMultiByte(CP_UTF8, 0, pwStr, -1, NULL, 0, NULL, NULL);

    char *szUtf8Temp=new char[ilen + 1];

    memset(szUtf8Temp, 0, ilen +1);



    WideCharToMultiByte (CP_UTF8, 0, pwStr, -1, szUtf8Temp, ilen, NULL,NULL);

    return szUtf8Temp;

}