Python 2 vs Python 3 - urllib formats

Je suis vraiment fatigué d'essayer de comprendre pourquoi ce code fonctionne en Python 2 et pas en Python 3. Je suis juste essayer de récupérer une page de json, puis de l'analyser. Voici le code en Python 2:

import urllib, json
response = urllib.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)

Je pensée le code équivalent en Python 3 est celle-ci:

import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)

Mais il souffle dans mon visage, parce que les données renvoyées par read() est une "octets" de type. Cependant, je ne peux pas pour la vie de me convertir à quelque chose qui json sera capable d'analyser. Je sais que les en-têtes que reddit est d'essayer d'envoyer de l'utf-8 pour moi, mais je n'arrive pas à obtenir les octets de décoder en utf-8:

import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content.decode("utf8"))

Ce que je fais mal?

Edit: le problème est que je ne peut pas obtenir les données dans un état utilisable, même si json charge les données, il est undisplayable, et je veux être en mesure d'imprimer les données à l'écran.

Deuxième edit: Le problème a plus à voir avec l'impression que l'analyse, il me semble. Alex réponse fournit un moyen pour que le script fonctionne en Python 3, en définissant les IO en utf8. Mais une question demeure: pourquoi est-ce que le code a travaillé en Python 2, mais pas de Python 3?

InformationsquelleAutor Dan Lew | 2010-06-27