0

I want to save an image from reddit to a local file:

import urllib.request
urllib.request.urlretrieve(post.url, "local-filename.jpg")

To reproduce, simply replace post.url with an URL containing "ä"

But i stumbled over an error one day: The reddit post URL had an "ä" in the title.

I understand that this has to do with a basic Python unicode issue, and i read UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128) , but i do not understand how to apply the fix to my problem.

This is the error i got:

https://www.reddit.com/r/OkBrudiMongo/comments/cogkye/hä_was_ist_los_petersans/ Hä, was ist los Peter-Sans?!
Traceback (most recent call last):
  File "C:/Users/Administrator/Documents/DefaultProject/Main.py", line 55, in <module>
    Mainbot()
  File "C:/Users/Administrator/Documents/DefaultProject/Main.py", line 48, in Mainbot
    Mainbot()
  File "C:/Users/Administrator/Documents/DefaultProject/Main.py", line 38, in Mainbot
    urllib.request.urlretrieve(post.url, "local-filename.jpg")
  File "C:\Program Files\Python37\lib\urllib\request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files\Python37\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 543, in _open
    '_open', req)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 1360, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "C:\Program Files\Python37\lib\urllib\request.py", line 1317, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "C:\Program Files\Python37\lib\http\client.py", line 1229, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Program Files\Python37\lib\http\client.py", line 1240, in _send_request
    self.putrequest(method, url, **skips)
  File "C:\Program Files\Python37\lib\http\client.py", line 1107, in putrequest
    self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 37: ordinal not in range(128)
Flying Thunder
  • 890
  • 2
  • 11
  • 37

0 Answers0