[求助]VLC ActiveX控件不能播放中文文件名的问题
VLC ActiveX只能播放英文文件,请问怎么解决啊?
下面是我的代码:
//取得控件的playlist对象
AXVLC::IVLCPlaylistPtr plo(reinterpret_cast<AXVLC::IVLCPlaylist*>(mVLC.get_playlist()), false);
//往playlist里添加文件
CString file("file:///c:\你好.avi");
plo->add(file.GetString());
播放
plo->play();
网上说要转成UTF8
我是这么转的:
wchar_t* wszString = (wchar_t *)file.GetString();
int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
char* szU8 = new char[u8Len + 1];
//转换
//unicode版对应的strlen是wcslen
::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);
//最后加上'\0'
szU8[u8Len] = '\0';
plo->add(szU8);
可还是不行。
[解决办法]
wchar_t* wszString = (wchar_t *)file.GetString();
这个地方不能强制转换,使用MultiByteToWideChar转换成unicode,然后再转换成utf-8