# Problem using TagLib::FileRef under Windows with exotic filename

Joel Lopes Da Silva joel at lopes-da-silva.com
Thu Nov 27 17:37:01 CET 2008

Hello,

small C++ function to open an MP3 file with TagLib under Windows, and
yet, I can't get it to work with exotic filenames (such as Japanese
filenames).

Here is basically what I did:

string utf8 = "C:\\path\\to\\audioFileWithJapaneseFilename.mp3";
int charcount = MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1,
NULL, 0);
wchar_t* buf = new wchar_t[charcount];
MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1, buf, charcount);
TagLib::FileRef f(buf);

I generated a Visual Studio 2008 project with Cmake and the sources of
TagLib, and I modified the main function of tagreader.cpp to put this
code within the main function (and I removed the "for" loop). And I am
sure my tagreader.cpp file is encoded in UTF-8.

Under Mac OS X and Linux, my problem is already solved thanks to
QFile::encodeName, but I really can't get this small piece of code to
work under Windows. And I accept to use almost any solution: using
some special function of Qt, or using MultiByteToWideChar, or anything
else.

Thank you very much in advance.

--
Joel Lopes Da Silva