You&#39;re right about FileRef taking only const char *, and yes QStringToTString doesn&#39;t help. But in addition, the function doesn&#39;t work. I don&#39;t know if it&#39;s with the new qt libraries (I&#39;m using 4.5.2). I took a look at the macro definition for the function and it looks outdated. viz.<br>

<br>#define QStringToTString(s) TagLib::String(s.utf8().data(), TagLib::String::UTF8)<br><br>QString no longer has a utf8() function.<br><br>But there is one thing I took away from this function that seems to work in addition to toAscii() and that&#39;s toUtf8().data().<br>

<br>For some reason toUtf8().constData() doesn&#39;t work, but toUtf8().data() works.<br><br>i.e.<br><br>TagLib::FileRef tagFile(qstr.toUtf8().data());<br><br>Would this be a more preferable way to do it than toAscii()?<br>

<br>Thanks,<br>Plasty.<br><br>PS: I also noticed that both Qt and taglib support utf16, but I tried it and it didn&#39;t work and also I don&#39;t know much about UTF.<br><br><br><div class="gmail_quote">2009/12/6 Lukáš Lalinský <span dir="ltr">&lt;<a href="mailto:lalinsky@gmail.com">lalinsky@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">On Sat, Dec 5, 2009 at 10:29 PM, Michael Pyne &lt;<a href="mailto:mpyne@purinchu.net">mpyne@purinchu.net</a>&gt; wrote:<br>


&gt; On Saturday 05 December 2009 15:25:13 Plasty Grove wrote:<br>
&gt;&gt; That makes sense, but even the following doesn&#39;t work:<br>
&gt;&gt;<br>
&gt;&gt; QString qstr = &quot;/home/mydir/music/song.mp3&quot;;<br>
&gt;&gt; QByteArray qbArray = qstr.toLocal8Bit();<br>
&gt;&gt; const char* str = qbArray.constData();<br>
&gt;&gt; TagLib::FileRef tagFile(str);<br>
&gt;&gt;<br>
&gt;&gt; In this case, I&#39;ve got a local object which stores the value returned by<br>
&gt;&gt; toLocal8Bit() and which is in scope when I&#39;m using str. Does qbArray get<br>
&gt;&gt; destroyed whenever constData() is called on it? When I&#39;m debugging, I can<br>
&gt;&gt; still see str holding a value when it goes to the next step.<br>
&gt;<br>
&gt; Perhaps an encoding issue if you don&#39;t use straight US-ASCII for your file<br>
&gt; names? In that case if &quot;local8Bit&quot; is not the encoding Taglib is expecting<br>
&gt; you&#39;ll get weirdness.<br>
&gt;<br>
&gt; The KDE JuK music manager uses taglib and has TString/QString conversion code<br>
&gt; (and I&#39;m sure Amarok has the same thing) if you want to see how those projects<br>
&gt; do it.<br>
<br>
</div>TagLib::String will not help in this case, because it also represents<br>
Unicode string, like QString. FileRef&#39;s filename parameter on<br>
non-Windows platforms is char*, so you need the actual encoded bytes.<br>
In Qt you can use QFile::encodeName(string) to encode the filename the<br>
same way Qt does it for file dialogs or other places that interact<br>
with the filesystem. This can still fail in some cases (different<br>
mounted filesystems using different encodings), but it&#39;s the best you<br>
can do if you store filenames as Unicode strings.<br>
<font color="#888888"><br>
--<br>
Lukas Lalinsky<br>
<a href="mailto:lalinsky@gmail.com">lalinsky@gmail.com</a><br>
</font><div><div></div><div class="h5">_______________________________________________<br>
taglib-devel mailing list<br>
<a href="mailto:taglib-devel@kde.org">taglib-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/taglib-devel" target="_blank">https://mail.kde.org/mailman/listinfo/taglib-devel</a><br>
</div></div></blockquote></div><br>