On Wed 16. April 2008 11:46:26 Aaron Digulla wrote:
> Quoting Dusan Zatkovsky <[EMAIL PROTECTED]>:
> > I have tried "print repr ( html )" and it prints strange charracters (
> > <\x00h\x00t\x00m\x00l\x00>\x00<\x00h ... ). Couldn't be problem there?
>
> Yup. The 0-byte (\x00) is the "end of text" character. The zero bytes
> come from unicode. It seems that you store the text as "Unicode 16bit
> little endian" in the database.
>
> To fix this, use the codec module of python to convert the unicode to
> UTF-8. This will also make the HTML take half the amount of bytes in
> the database.
>
> Regards,

Ha!

The text is stored to DB this way:

e = QTextEdit()
doc = self.ui.textEdit.document()
text = doc.toHtml()
foo = base64.b64encode ( text ) # this is point of failure, because text is
                                                        # QString object ( and 
it is utf16 as default afaik )

BTW:

I am using base64 because I am storing python dictionary to db 
as "name1=value1,name2=value2" and I must guarantee that value will not 
contains '=' and ',' charracters, because I am splitting pairs by ',' and 
name/value by '=' when reading it back from db.
Maybe it will be better to use some custom repr(), which escapes all non-ascii 
charracters, including ',' and '=' to prevent conflicts. Maybe i'll change it 
later...


So back to code. I have fixed it by:
        foo = base64.b64encode ( text.toUtf8() )

Now it works:
        html = unicode ( utils.decB64 ( data ), 'utf8' )
        iw.ui.udescTextBrowser.setHtml ( html )




Thanks a lot!


--
Regards,
Dusan


_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to