TagLib::FileRef and Unicode

Jeremy Gregorio jeremy.firefox.addon at gmail.com
Wed Dec 4 04:09:06 UTC 2013


Thanks! That did the trick. I'm passing in url encoded file names, so I do
this:

int wmain(int argc, wchar_t *argv[])
{

    TagLib::List<TagLib::FileRef> fileList;
    QString filepath = QString::fromWCharArray ( argv[argc - 1] );
    QString url = QUrl::fromPercentEncoding( filepath.toLocal8Bit() );
    TagLib::FileRef f( url.toStdWString().c_str() );

...

which gets me a working Taglib::Fileref. :).

>From here I can decode the rest of my parameters using

...
    QString decoded = QString::fromWCharArray ( argv[i + 1] );
    QString qValue = QUrl::fromPercentEncoding( decoded.toLocal8Bit() );
    TagLib::String value ( qValue.toUtf8().constData(),
TagLib::String::UTF8);
...

I ran across QStringToTString, but it seem broken since QT 4.8 uses
constData() instead of data(), but it was just as easy to re-write the
template :). This'll help a lot, since it should (finally) fix the handling
of unicode paths in my app.


On Mon, Dec 2, 2013 at 5:16 PM, Miyakoda Akira <tsuda.kageyu at gmail.com>wrote:

> Oh Jeremy! I forgot to tell you a thing.
>
> You should create a FileRef from a Unicode file name like this:
>
> int wmain(int argc, wchar_t *argv[])
> {
> ...
>     QString filepath = QString::fromWCharArray( argv[argc - 1] );
> ...
>     TagLib::FileRef f( filepath.toStdWString().cstr() );
>
>
> 2013/12/2 Jeremy Gregorio <jeremy.firefox.addon at gmail.com>
>
>> 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
>>
>> <http://www.linkedin.com/pub/jeremy-gregorio/36/302/429>
>> <http://www.glimmersoft.com/socialmedia/btn_viewmy_160x33.png>
>>
>> _______________________________________________
>> taglib-devel mailing list
>> taglib-devel at kde.org
>> https://mail.kde.org/mailman/listinfo/taglib-devel
>>
>>
>
> _______________________________________________
> taglib-devel mailing list
> taglib-devel at kde.org
> https://mail.kde.org/mailman/listinfo/taglib-devel
>
>


-- 
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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/taglib-devel/attachments/20131203/948acecd/attachment-0001.html>


More information about the taglib-devel mailing list