pipeline encoding
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Fri Dec 7 02:31:39 EST 2007
En Thu, 06 Dec 2007 14:13:04 -0300, Tomasz Toczyski <tt at praterm.com.pl>
escribió:
> My locale is set to UTF-8. The command:
> python -c "print u'\u03A9'"
> gives me the desired result and doesn't produce any error.
Because in this case stdout is bound to your terminal and Python can ask
the OS which encoding it uses.
> But when I want to redirect the output to a file I invoke:
> python -c "print u'\u03A9'" > file.txt
> I get an error:
>
> File "<string>", line 1, in <module>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u03a9' in
> position 0: ordinal not in range(128)
In this case, stdout is redirected, and a file can be written in any
encoding you like. So unless you tell Python which encoding to use, it
refuses to guess. Try:
python -c "print u'\u03A9'.encode('utf-8')" > file.txt
Also try: python -c "import sys; print sys.stdout.encoding"
and see what happens in both cases.
--
Gabriel Genellina
More information about the Python-list
mailing list