On Jan 11, 10:40 pm, "W. Martin Borgert" <deba...@debian.org> wrote: > Hi, > > naively, I thought the following code: > > #!/usr/bin/env python2.6 > # -*- coding: utf-8 -*- > import codecs > d = { u'key': u'我爱中国人' } > if __name__ == "__main__": > with codecs.open("ilike.txt", "w", "utf-8") as f: > print >>f, d > > would produce a file ilike.txt like this: > > {u'key': u'我爱中国人'} > > But unfortunately, it results in: > > {u'key': u'\u6211\u7231\u4e2d\u56fd\u4eba'} > > What's the right way to get the strings in UTF-8? > > Thanks in advance!
It has worked, you're just seeing how python presents unicode characters in the interactive interpreter: Python 2.7.1+ (r271:86832, Dec 24 2010, 10:04:43) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> x = {u'key': u'\u6211\u7231\u4e2d\u56fd\u4eba'} >>> x {u'key': u'\u6211\u7231\u4e2d\u56fd\u4eba'} >>> print x {u'key': u'\u6211\u7231\u4e2d\u56fd\u4eba'} >>> print x['key'] 我爱中国人 That last line only works if your terminal uses an suitable encoding (e.g. utf-8). Regards, Alex -- http://mail.python.org/mailman/listinfo/python-list