[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyKDE] QByteArray and unicode
From:       Jim Bublitz <jbublitz () nwinternet ! com>
Date:       2005-12-24 8:40:18
Message-ID: 200512240040.19070.jbublitz () nwinternet ! com
[Download RAW message or body]

On Friday 23 December 2005 11:11, Orcan Ogetbil wrote:
> Hi,
> using the following code, I can get the track title that's being played in
> amarok.
>
> [code]
> import dcop
>
> dcopclient = dcop.DCOPClient()
> dcopclient.registerAs("amarokapp")
> dcopclient.rc = dcop.DCOPRef("amarok", "player")
>
> result = dcopclient.rc.call("title()")
> title = result.data.data()
>
> print title
> [/code]
>
> The problem is, when the track title contains non-ascii characters, they
> are not displayed properly.
>
> The 'result' is a QByteArray object,
> 'result.data.data()' is a ascii python string
>
> How and where should I set the encoding to display the track title
> properly? (and how do I convert the QByteArray object to a unicode QString
> object?)


Take a look at PyKDE/doc/dcopext.html  or examples/example_dcopext.py. PyKDE 
doesn't support the method you're using (but see below), because there's no 
easy way to convert the QByteArray to the appropriate object type using 
Python.

title () should return a QString, and using the method outlined in the docs 
will get you a QString from title (). The code that does it is in 
extensions/dcopext.py and uses the dcop_add and dcop_next methods coded in 
C++ and compiled as part of sip/kdecore/bytearray.sip - you could use those 
methods in your own code if you want to duplicate the Python code in 
dcopext.py.

Jim

_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic