Index: Lib/urllib/request.py =================================================================== --- Lib/urllib/request.py (revision 69446) +++ Lib/urllib/request.py (working copy) @@ -1064,8 +1064,16 @@ headers["Connection"] = "close" headers = dict( (name.title(), val) for name, val in headers.items()) + selector = req.get_selector() + + # Handle non-ascii paths try: - h.request(req.get_method(), req.get_selector(), req.data, headers) + selector.encode("ascii") + except UnicodeEncodeError: + selector = quote(selector) + + try: + h.request(req.get_method(), selector, req.data, headers) r = h.getresponse() except socket.error as err: # XXX what error? raise URLError(err)