Here is the trackback (the uploaded file is a PDF file):
UnicodeDecodeError Python 3.1.1: /home/chu7/software/bin/python3
Mon Sep 7 12:31:07 2009
A problem occurred in a Python script. Here is the sequence of function
calls leading up to the error, in the order they occurred.
/home/chu7/web/cgi-bin/upload.py in ()
35 );
36 elif pathInfo == "/upload":
=> 37 fieldStorage = cgi.FieldStorage();
38 fileItem = fieldStorage["file"];
39 if fileItem.filename != "":
fieldStorage undefined, cgi = <module 'cgi'
from '/home/chu7/software/lib/python3.1/cgi.py'>, cgi.FieldStorage =
<class 'cgi.FieldStorage'>
/home/chu7/software/lib/python3.1/cgi.py in __init__(self=FieldStorage
(None, None, []), fp=None, headers={'content-length': '76784', 'content-
type': 'multipart/form-data; boundary=---------------------------
7d95563062a'}, outerboundary='', environ=<os._Environ object at
0x8ee040c>, keep_blank_values=0, strict_parsing=0)
489 self.read_urlencoded()
490 elif ctype[:10] == 'multipart/':
=> 491 self.read_multi(environ, keep_blank_values,
strict_parsing)
492 else:
493 self.read_single()
self = FieldStorage(None, None, []), self.read_multi = <bound method
FieldStorage.read_multi of FieldStorage(None, None, [])>, environ =
<os._Environ object at 0x8ee040c>, keep_blank_values = 0,
strict_parsing = 0
/home/chu7/software/lib/python3.1/cgi.py in read_multi
(self=FieldStorage(None, None, []), environ=<os._Environ object at
0x8ee040c>, keep_blank_values=0, strict_parsing=0)
609 # Create bogus content-type header for proper multipart
parsing
610 parser.feed('Content-Type: %s; boundary=%s\r\n\r\n' %
(self.type, ib))
=> 611 parser.feed(self.fp.read())
612 full_msg = parser.close()
613 # Get subparts
parser = <email.feedparser.FeedParser object at 0x910daac>, parser.feed
= <bound method FeedParser.feed of <email.feedparser.FeedParser object
at 0x910daac>>, self = FieldStorage(None, None, []), self.fp =
<_io.TextIOWrapper name='<stdin>' encoding='ANSI_X3.4-1968'>,
self.fp.read = <built-in method read of _io.TextIOWrapper object at
0x8ee833c>
/home/chu7/software/lib/python3.1/encodings/ascii.py in decode
(self=<encodings.ascii.IncrementalDecoder object at 0x8f6b74c>,
input=b'-----------------------------7d95563062a\r\nCo...\n-------------
----------------7d95563062a--\r\n', final=True)
24 class IncrementalDecoder(codecs.IncrementalDecoder):
25 def decode(self, input, final=False):
=> 26 return codecs.ascii_decode(input, self.errors)[0]
27
28 class StreamWriter(Codec,codecs.StreamWriter):
global codecs = <module 'codecs'
from '/home/chu7/software/lib/python3.1/codecs.py'>,
codecs.ascii_decode = <built-in function ascii_decode>, input = b'------
-----------------------7d95563062a\r\nCo...\n---------------------------
--7d95563062a--\r\n', self = <encodings.ascii.IncrementalDecoder object
at 0x8f6b74c>, self.errors = 'strict'
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc7 in position
158: ordinal not in range(128)
args = ('ascii', b'-----------------------------
7d95563062a\r\nCo...\n-----------------------------7d95563062a--\r\n',
158, 159, 'ordinal not in range(128)')
encoding = 'ascii'
end = 159
object = b'-----------------------------7d95563062a\r\nCo...\n----
-------------------------7d95563062a--\r\n'
reason = 'ordinal not in range(128)'
start = 158
with_traceback = <built-in method with_traceback of
UnicodeDecodeError object at 0x905bd2c>
0. When you have a problem, and you are not sure it is an error in the
interpreter or stdlib, try posting to python-list first. If you do not
soon get a definitive determination here, do that. This is not a
question-answering or user-code debugging list.
1. When posting code so others can read it, please leave off trailing
semi-colons. Python is not C. The unnecessary ';'s are distracting noise.
2. When posting problematic code, please strip it down to the minimum
necessary to show the problem. From what I understand, the minimum here is
"import cgi; d = cgi.FieldStorage()". The rest is distracting noise.
3. When you get a error traceback, copy and paste *the whole traceback*
(especially when requested).
4. Post the exact interpreter version used. Is this with 3.1.1, with
all the latest bug fixes? Even better, try with the lastest version and
say so.
5. When the problem involved interacting with the external system (such
as os.environ), specify the os. It often makes a difference.
In this case, your problem seems to be that the relevant field of
os.environ has a non-ascii char. My impression is that this is not
intented to be allowed, at least for posix systems, but I am not sure.
It is possible that something in the module has not been updated
properly, but I do not know enough of the specs to say whether the
problem is your data or the library code.
You should determine the 'offending' string and print out its
representation (with repr(s)) and include that with any further post
here or on python-list. In general, include offending data (also
minimized) along with offending code.