Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #18519
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Subject | Re: UnicodeEncodeError when piping stdout, but not when printing directly to the console |
| Date | 2012-01-04 22:49 +0100 |
| Organization | None |
| References | <l4set8xjf7.ln2@news.ducksburg.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.4430.1325713810.27778.python-list@python.org> (permalink) |
Adam Funk wrote:
> (I'm using Python 2.7.2+ on Ubuntu.)
>
> When I'm running my program in an xterm, the print command with an
> argument containing unicode works fine (it correctly detects my UTF-8
> environment). But when I run it with a pipe or redirect to a file (|
> or >), unicode strings fail with the following (for example):
>
> UnicodeEncodeError: 'ascii' codec can't encode character u'\u0107' in
> position 21: ordinal not in range(128)
>
> How can I force python (preferably within my python program, rather
> than having to set something externally) to treat stdout as UTF-8?
$ cat force_utf8.py
# -*- coding: utf-8 -*-
import sys
if sys.stdout.encoding is None:
import codecs
writer = codecs.getwriter("utf-8")
sys.stdout = writer(sys.stdout)
print u"Ähnlich üblich nötig"
$ python force_utf8.py
Ähnlich üblich nötig
$ python force_utf8.py | cat
Ähnlich üblich nötig
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
UnicodeEncodeError when piping stdout, but not when printing directly to the console Adam Funk <a24061@ducksburg.com> - 2012-01-04 21:15 +0000
Re: UnicodeEncodeError when piping stdout, but not when printing directly to the console Peter Otten <__peter__@web.de> - 2012-01-04 22:49 +0100
Re: UnicodeEncodeError when piping stdout, but not when printing directly to the console Adam Funk <a24061@ducksburg.com> - 2012-01-06 09:12 +0000
Re: UnicodeEncodeError when piping stdout, but not when printing directly to the console Peter Otten <__peter__@web.de> - 2012-01-06 10:34 +0100
Re: UnicodeEncodeError when piping stdout, but not when printing directly to the console Adam Funk <a24061@ducksburg.com> - 2012-01-06 14:22 +0000
csiph-web