Issues with unicode conversion
Scott Wheeler
wheeler at kde.org
Fri Aug 17 13:54:20 CEST 2007
Ali Shah wrote:
> Hi, I have some weird issues with trying to retrieve tags in unicode,
> while using taglib 1.4.
> I am trying to retrieve the album name, the track title and the artist
> (in this specific order)
> from a tag in utf-8 format. Unfortunately if I extract the tag like the
> example below, the title sanity check's end up being garbage for some
> tracks, and perfect for others. For example the current setup seems to
> work with UTF-8 tags, where as they fail for normal ascii Tags..
> What am i doing wrong? I've been trying to work out the issues all
> nigth and I am completely at a loss.
>
> /*** Copy the album */
> const char* actualAlbum =
> tagFile.tag()->album().to8Bit(true).c_str();
> if (tagFile.tag()->album() == TagLib::String(""))
> {
> actualAlbum= unknownString.toCString(true);
> }
> char* album = strdup(actualAlbum);
> QString qalbum1 = QString::fromUtf8(actualAlbum);
> QString qalbum2 = QString::fromUtf8(album);
>
> qDebug() << "Album sanity check1: " << qalbum1;
> qDebug() << "Album sanity check2: " << qalbum2;
>
This doesn't actually have anything to do with unicode -- you're using
the c_str() function on a temporary value and then saving it for later,
but once the "parent" string has passed out of scope (the end of the
function call) the c_str() is no longer valid.
But it'd probably be easier to just use the TStringToQString() macro
provided in the tstring.h header (or a slightly modified one for Qt 4). :-)
-Scott
More information about the taglib-devel
mailing list