On 2017-01-13 05:44 PM, Grant Edwards wrote:
On 2017-01-13, D'Arcy Cain <da...@vybenetworks.com> wrote:

Here is the failing code:

with open(sys.argv[1], encoding="latin-1") as fp:
   for ln in fp:
     print(ln)

Traceback (most recent call last):
   File "./load_iff", line 11, in <module>
     print(ln)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in
position 132: ordinal not in range(128)

I don't understand why the error says "ascii" when I told it to use
"latin-1".

That can't be the failing code, since it's failing at line 11, and
that's only 5 lines. It helps if we can tell which line generated the
error.  ;)

I didn't think that the part leading up to it was relevant.  Here it is.

#! /usr/bin/python

import sys, os

if len(sys.argv) < 2:
    print("No file named", file=sys.stderr)
    sys.exit(1)

I'm _guessing_ that line 11 is the print(), and it's barfing because

Of course.  That's why the error is listed right below it.

stdout is using ascii encoding, and there's no way to encode that
character in ascii so that it can be printed to an ascii output
stream.

Thank you! I know all about that but for some reason I did not have PYTHONIOENCODING=utf8 set on that particular machine. I have it set on every other machine I work on an never thought to check. My Unicode universe is all right again.

Cheers.

--
D'Arcy J.M. Cain
System Administrator, Vex.Net
http://www.Vex.Net/ IM:da...@vex.net
VoIP: sip:da...@vex.net
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to