You need to decode to eg to utf-8 when read with in urlopen in Python 3.
If not you get byte string back.
Requests is getting correct encoding from web-site.
If not you get byte string back.
c = Calendar(urlopen(url).read().decode('utf-8'))
Output:https://calendar.google.com/calendar/ical/t6l47q578aqr8qjc3pq8cdnfv0%40group.calendar.google.com/public/basic.ics
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<style>
body {margin: 3em;}
header {background: #eee; padding: 1em;}
article {padding: 2em;}
</style>
</head>
<body>
Had you used Request then there is no need for decode.Requests is getting correct encoding from web-site.
c = Calendar(requests.get(url).text)Same output as over.