OK I get something working with the following: def escape(self, value): try: b = unicode(value,'utf-8') except: try: b = unicode(value,'latin-1') except: b = value return unicode(MySQLdb.escape_string(b.encode('utf-8')),'utf-8') will try a little more and commit if it works