X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=blobdiff_plain;f=wrw%2Fform.py;h=85114680d59d271100994fa6f9d4d97fa05e2cc5;hp=7905dc65bb64be956d6a60b140864cbbf4faf365;hb=HEAD;hpb=3350ac8c0b5bdc6c098732931a59b7982beb760b diff --git a/wrw/form.py b/wrw/form.py index 7905dc6..8511468 100644 --- a/wrw/form.py +++ b/wrw/form.py @@ -5,18 +5,19 @@ __all__ = ["formdata"] def formparse(req): buf = {} - buf.update(urllib.parse.parse_qsl(req.query)) - if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded": + buf.update(urllib.parse.parse_qsl(req.query, keep_blank_values=True)) + ctype, ctpars = proto.pmimehead(req.ihead.get("Content-Type", "")) + if ctype == "application/x-www-form-urlencoded": try: rbody = req.input.read(2 ** 20) except IOError as exc: return exc if len(rbody) >= 2 ** 20: return ValueError("x-www-form-urlencoded data is absurdly long") - buf.update(urllib.parse.parse_qsl(rbody.decode("latin1"))) + buf.update(urllib.parse.parse_qsl(rbody.decode("latin1"), encoding=ctpars.get("charset", "utf-8"), keep_blank_values=True)) return buf -class badmultipart(Exception): +class badmultipart(IOError): pass class formpart(object):