Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #18519

Re: UnicodeEncodeError when piping stdout, but not when printing directly to the console

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)

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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