As @marr75 suggests, make sure you set charset='utf8'
on your connections. Setting use_unicode=True
is not strictly necessary as it is implied by setting the charset.
Then make sure you are passing unicode objects to your db connection as it will encode it using the charset you passed to the cursor. If you are passing a utf8-encoded string, it will be doubly encoded when it reaches the database.
So, something like:
conn = MySQLdb.connect(host="localhost", user='root', password='', db='', charset='utf8')
data_from_ldap = 'Mxc3xbcller'
name = data_from_ldap.decode('utf8')
cursor = conn.cursor()
cursor.execute(u"INSERT INTO mytable SET name = %s", (name,))
You may also try forcing the connection to use utf8 by passing the init_command param, though I'm unsure if this is required. 5 mins testing should help you decide.
conn = MySQLdb.connect(charset='utf8', init_command='SET NAMES UTF8')
Also, and this is barely worth mentioning as 4.1 is so old, make sure you are using MySQL >= 4.1
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…