Piotr Sobolewski <nie_dzi...@gazeta.pl> 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: <URL:http://effbot.org/zone/unicode-objects.htm> <URL:http://www.reportlab.com/i18n/python_unicode_tutorial.html> <URL:http://www.amk.ca/python/howto/unicode> If you want something more official, try the PEP that introduced Unicode objects, PEP 100: <URL:http://www.python.org/dev/peps/pep-0100/>. > 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. <URL:http://www.joelonsoftware.com/articles/Unicode.html> 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: > $ example.py > 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 -- http://mail.python.org/mailman/listinfo/python-list