osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Convert a list with wrong encoding to utf8


I'm using Python3 and pymysql and already have charset presnt

[python]
con = pymysql.connect( db = 'clientele', user = 'vergos', passwd = '******', charset = 'utf8' )
cur = con.cursor()
[/python]

>From that i understand that the names being fetched from the db to pyhton script are being fetced as utf8, right?

I dont convert, format the string in the meanwhile. Python3 handles the encoidng and i dont know from where latin iso get into the middle but when i

[python]names = tuple( [s.encode('latin1').decode('utf8') for s in names] )[/python]

[output]UnicodeEncodeError('latin-1', '???? ???????', 0, 4, 'ordinal not in range(256)')[/output]

which is a perfectly valid names but still gives an error.

Also the strings produced '\xce\x86\xce\xba\xce\xb7\xcf\x82 \xce\xa4\xcf\x83\xce\xb9\xce\xac\xce\xbc\xce\xb7\xcf\x82' are strings not raw bytes.

WHY Python3 instead of fetching the values from the db as 'utf8' it stores the values in hex representation?