Hello, Thanks for the suggestions and information Diez!
On Nov 18, 9:38 am, "Diez B. Roggisch" <de...@nospam.web.de> wrote: > > You are aware that the coding-declaration only affects unicode-literals (the > ones like u"i'm unicode")? So the above insert-statement is *not* unicode, > it's a byte-string in whatever encoding your editor happens to save the > file in. Thanks. I didn't know that, but that is helpful. > > And that's point two: make sure your editor reads and writes the file in the > same encoding you specified in the comment in the beginning. That is taken care of: the files are opened/saved as UTF-8. > > Makes sense if the execute tries to encode to unicode first - as you didn't > give it a unicode-object. > In Python 2.6 where I originally developed the code, it wasn't necessary to explicitly specify the type of some text: it was basically handled for you. It does make sense though. > > > > So far I've tried a number of different things, including: > > > 1. Using Unicode strings (e.g. u"\u212B") > > > 2. Manually specifying the encoding using sys.setdefaultencoding > > ('utf-8') > > > 3. Manually enabling Unicode support in MySQLdb > > (use_unicode=False, charset = "utf8") > > You *disabled* unicode here!!!!! Unicode is NOT utf-8!!! Oops. It was enabled when I ran it, I just copied the above text from somewhere else and forgot to change it. I am aware that Unicode does not equal utf-8, but utf-8 is a Unicode encoding, right? > > http://www.joelonsoftware.com/articles/Unicode.html Thanks! > > Try the above, and better yet provide self-contained examples that show the > behavior. > > Diez Still no luck. I also tried using double-quotes instead of single- quotes around the relevant strings (as suggested over email by ThreaderSlash), however, that did not work for me. Here is a small example of what I'm trying to do. Notice that if you run it in Python 2.5-2.6, everything works fine. It is only in Python 2.4 that the below example doesn't work. ============= Begin Example ================== #!/usr/bin/env python #-*- coding:utf-8 -*- import sys def main(): import MySQLdb, getpass admin = raw_input("Database admin: ") pw = getpass.getpass("Password: ") db = MySQLdb.connect(user=admin, passwd=pw) cursor = db.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS unicode_test;") cursor.execute(''' CREATE TABLE `unicode_test`.`test` ( `id` SMALLINT unsigned NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`), INDEX (`id`) ) DEFAULT CHARSET=utf8;''') cursor.execute(''' INSERT INTO `unicode_test`.`test` VALUES (NULL, 'Ångström'); ''') # Test 1 print "Just printing: %s" % 'Ångström' # Test 2 cursor.execute("SELECT name FROM unicode_test.test;") print "From database: %s" % cursor.fetchone()[0].decode('utf-8') # Test 3 (Manual) print 'To verify manually: mysql -u %s -p -e "SELECT name FROM unicode_test.test"' % admin if __name__ == '__main__': sys.exit(main()) ============= End Example ==================== Any suggestions? Thanks! Keith -- http://mail.python.org/mailman/listinfo/python-list