2010-11-16 6 views
0

J'essaie d'utiliser urllib2 dans python 2.7 pour aller chercher une page sur le web. La page est codée en Unicode (UTF-8) et comporte des caractères grecs. Quand j'essaie de l'extraire et de l'imprimer avec le code ci-dessous, je reçois du charabia à la place des caractères grecs. Le résultat est le même dans Netbeans 6.9.1 et dans Windows 7 CLI.problème de décodage avec urllib2 en python

Je fais quelque chose de mal, mais quoi?

+0

Votre code Python imprime les caractères grecs corrects pour moi. – eumiro

+2

Votre console n'est pas configurée pour imprimer Unicode (probablement pas configurée pour gérer UTF-8). Faites une recherche sur "Python printing Unicode Characters" puisque c'est votre vrai problème. –

+0

imprimer urllib2.urlopen ("http://www.pamestihima.gr") .read(). Encoder ("utf-8") –

Répondre

1

Il imprime correctement pour moi aussi.

Vérifiez le codage de caractères du programme dans lequel vous visualisez le code source HTML. Par exemple, dans un terminal Linux, vous pouvez trouver "Set Character Encoding" et assurez-vous qu'il est UTF-8.

3
  1. Unicode est pas UTF-8. UTF-8 est un codage de chaîne, comme ISO-8859-1, ASCII, etc.

  2. Toujours decode vos données le plus rapidement possible, de faire réel Unicode hors de celui-ci. ('somestring in utf8'.decode('utf-8') == u'somestring in utf-8'), les objets sont unicode u'', pas ''

  3. Lorsque vous avez des données en laissant votre application, toujours encode dans le codage correct. Pour les sites Web, il s'agit principalement de utf-8. Pour les trucs sur la console, c'est le codage de votre console. Sous Windows, c'est et non UTF-8 par défaut.