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