[PyQt] Strange utf-8 conversions in PyQt3

Phil Thompson phil at riverbankcomputing.com
Tue Nov 20 09:56:06 GMT 2012


On Wed, 14 Nov 2012 00:39:52 +0100, Hans-Peter Jansen <hpj at urpla.net>
wrote:
> Dear Phil,
> 
> since one of the more recent versions of SIP (4.14 or 4.14.1), MySQL
> database 
> table data shows strange characters with PyQt3. The tables hold utf-8
> data, 
> and all other database tools handle the utf-8 data as expected. Only
PyQt3 
> apps show this anomaly, PyQt4 is still fine.
> 
> I can provoke this effect by adding a file sitecustomize.py
> to /usr/lib64/python2.7/site-packages/, containing:
> 
> import sys
> sys.setdefaultencoding('utf-8')
> 
> 
> Then, a simple query results in: (check 2nd char)
> 
> 	LÃBBENAU/SPREEWALD
> 
> while this was expected:
> 
> 	LÜBBENAU/SPREEWALD
> 
> 
> Converted to hex:
> 
> 00000000  4c c3 83 c2 9c 42 42 45  4e 41 55 2f 53 50 52 45 
> |L....BBENAU/SPRE|
> 00000010  45 57 41 4c 44 0a 4c c3  9c 42 42 45 4e 41 55 2f 
> |EWALD.L..BBENAU/|
> 00000020  53 50 52 45 45 57 41 4c  44 0a                    |SPREEWALD.|
> 0000002a
> 
> Obviously, bytes 1-5 are converted in some strange way (like encoding
> utf-8 
> two times). The bytes at offset 23 and 24 are the expected ones (utf-8
> capital 
> U umlaut). If I remove sitecustomize.py, simple queries work, but
feeding 
> values as QStrings back into any UI object results in the same mess
(e.g. 
> reimplemented QDataTable.paintField, that formats some value, and calls 
> painter.drawText). 
> 
> Does all this ring a bell for you? I'm pretty busted ATM.
> 
> TIA,
> Pete
> 
> python: 2.7.3
> sip:    4.14
> qt4:    4.8.3
> pyqt4:  4.9.5
> qt3:    3.3.8c
> pyqt3:  3.18.1
> 
> It's not an x86_64 vs i586 issue at least.

Nothing springs to mind, but it's not something I'm going to put any time
into. You might try...

http://www.riverbankcomputing.com/static/Docs/sip4/using.html#building-a-private-copy-of-the-sip-module

...with a known working version of SIP.

Phil


More information about the PyQt mailing list