Unicode literals that work in python 3 and 2 Unicode literals that work in python 3 and 2 python python

Unicode literals that work in python 3 and 2


Edit - Since Python 3.3, the u'' literal works again, so the u() function isn't needed.

The best option is to make a method that creates unicode objects from string objects in Python 2, but leaves the string objects alone in Python 3 (as they are already unicode).

import sysif sys.version < '3':    import codecs    def u(x):        return codecs.unicode_escape_decode(x)[0]else:    def u(x):        return x

You would then use it like so:

>>> print(u('\u00dcnic\u00f6de'))Ünicöde>>> print(u('\xdcnic\N{Latin Small Letter O with diaeresis}de'))Ünicöde


In 3.0, 3.1, and 3.2:

from __future__ import unicode_literals

Source: ubershmekel, in the question. See revision 4 for the original.