the official way of printing unicode strings

Ben Finney bignose+hates-spam at
Sun Dec 14 22:55:44 CET 2008

Piotr Sobolewski <NIE_DZIALA at> writes:

> in Python (contrary to Perl, for instance) there is one way to do
> common tasks.

More accurately: the ideal is that there should be only one *obvious*
way to do things. Other ways may also exist.

> Could somebody explain me what is the official python way of
> printing unicode strings?

Try these:


If you want something more official, try the PEP that introduced
Unicode objects, PEP 100:


> I tried to do this such way:
> s = u"Stanisław Lem"
> print u.encode('utf-8')
> This works, but is very cumbersome.

Nevertheless, that says everything that needs to be said: You've
defined a Unicode text object, and you've printed it specifying which
character encoding to use.

When dealing with text, the reality is that there is *always* an
encoding at the point where program objects must interface to or from
a device, such as a file, a keyboard, or a display. There is *no*
sensible default encoding, except for the increasingly-inadequate
7-bit ASCII.


Since there is no sensible default, Python needs to be explicitly told
at some point which encoding to use.

> Then I tried to do this that way:
> s = u"Stanisław Lem"
> print u
> This breaks when I redirect the output of my program to some file,
> like that:
> $ > log

How does it “break”? What behaviour did you expect, and what
behaviour did you get instead?

 \     “I hope that after I die, people will say of me: ‘That guy sure |
  `\                            owed me a lot of money’.” —Jack Handey |
_o__)                                                                  |
Ben Finney

More information about the Python-list mailing list