utf-8 in einer URL
Verfasst: Samstag 16. Mai 2015, 22:37
Ich habe folgendes Beispielskript (das eigentliche Skript ist deutlich größer), das HTML-Seiten im Netz aufruft, auswertet und ggf. Daten ausliest. Seit heute habe ich eine Adresse drin, die ein Sonderzeichen enthält. Ich habe das mal auf eine Fake-Adresse zusammengekürzt.
Ich erhalte dann folgende Fehlermeldung:
Im Kern geht es darum, dass hier unterschiedliche encodings genutzt werden, da die Seite im Netz liegt und der Fehler im Modul liegt, habe ich darauf m. E. keinen Einfluss.
Kann ich in meinem Skript etwas ändern, dass der Fehler nicht mehr auftritt.
Code: Alles auswählen
import urllib.request
url = "http://www.ó.de" # Fake-Adresse
html = urllib.request.urlopen(url).read()
print(str(html)[:30])Code: Alles auswählen
Traceback (most recent call last):
File "C:/Users/[...]/Desktop/skript.py", line 8, in <module>
html = urllib.request.urlopen(url).read()
File "C:\Python34\lib\urllib\request.py", line 153, in urlopen
return opener.open(url, data, timeout)
File "C:\Python34\lib\urllib\request.py", line 455, in open
response = self._open(req, data)
File "C:\Python34\lib\urllib\request.py", line 473, in _open
'_open', req)
File "C:\Python34\lib\urllib\request.py", line 433, in _call_chain
result = func(*args)
File "C:\Python34\lib\urllib\request.py", line 1261, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "C:\Python34\lib\urllib\request.py", line 1235, in do_open
h.request(req.get_method(), req.selector, req.data, headers)
File "C:\Python34\lib\http\client.py", line 1066, in request
self._send_request(method, url, body, headers)
File "C:\Python34\lib\http\client.py", line 1094, in _send_request
self.putrequest(method, url, **skips)
File "C:\Python34\lib\http\client.py", line 958, in putrequest
self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 20: ordinal not in range(128)Kann ich in meinem Skript etwas ändern, dass der Fehler nicht mehr auftritt.