[id3lib-devel] TagLib::FileRef and Unicode
Brought to you by:
t1mpy
From: Jeremy G. <jer...@gm...> - 2013-12-01 23:09:18
|
Hi all, I finally noticed my little tagging program doesn't handle Unicode in the slightest :). Does anyone have suggestions on handling Unicode files? I'm on an English (United States) Windows XP install trying to build with Visual C++. To deal with the headache that is passing Unicode Parameters I use URI Encoding (like here http://meyerweb.com/eric/tools/dencoder/) to encode the parameters to a command line program I wrote and then decode them as they come in. This part seems to work since I can decode the strings and write them to tags with the Unicode intact. But when I try to write tags to a file on a Unicode path it fails :(. Right no I'm using QT's library to handle the strings because of a stackoverflow post I found where the guy had good luck with it, but darned if I can get it working. int main(int argc, char *argv[]) { TagLib::List<TagLib::FileRef> fileList; std::string fileName( "c:\\temp\\debug " ); std::string extension (".txt"); ofstream a_file ( fileName + extension ); QString filepath ( argv[argc - 1] ); QString url = QUrl::fromPercentEncoding( filepath.toUtf8() ); a_file << "Param: " << url.toStdString() << "\n\n"; QFile myQfile ( url ); if( !myQfile.exists() ){ a_file << "The param \"" << myQfile.error() << "\" is not a file."; }//END IF TagLib::FileRef f( QFile::encodeName(url).constData() ); if(!f.isNull() && f.tag()) fileList.append(f); argc--; a_file.close(); //... If I get this far I can start applying tags. The above works great until I try it with a unicode path, like "C:\temp\私\Power Up!.mp3" which I encode as C%3A%5Ctemp%5C%E7%A7%81%5CPower%20Up!.mp3 I know I'm at least getting the string decoded right since I write it to a text file and it looks right in notepad++ encoded in UTF-8 without the BOM. -- Jeremy D Gregorio Sr Consultant #: 520-275-5352 fax: 520-747-2540 <http://www.linkedin.com/pub/jeremy-gregorio/36/302/429> <http://www.glimmersoft.com/socialmedia/btn_viewmy_160x33.png> |