我在爬取凤凰网却出现
UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 151120: illegal multibyte sequence
这是我的代码
__author__ = 'my'
import urllib.request
url = 'http://www.ifeng.com/'
req = urllib.request.urlopen(url)
req = req.read()
req = req.decode('utf-8')
print(req)
为什么utf8却报错GBK?
Il s'agit d'un problème avec cmd.exe, d'autres logiciels peuvent le décoder correctement. Par exemple, bloc-notes, navigateur. . . .
Ajouté :
4. Exécutez pythonEn fait, vous pouvez également modifier l'encodage de cmd.exe en utf-8 (cp65001)
Étapes :
1 Exécutez CMD.exe
2, chcp 65001<.>3. Modifiez la police des propriétés de la fenêtre
Cliquez avec le bouton droit sur la barre de titre de la fenêtre CMD, sélectionnez "Propriétés"->"Police" et remplacez la police par la police True Type "Lucida Console"
Comme indiqué :
Contenu de x.py :Je viens de mettre le code de la question dans pycharm, et ce problème ne s'est pas produit. Ensuite, j'ai utilisé l'invite de commande Windows pour taper ligne par ligne, et ce problème s'est produit. L'invite de commande Windows utilise le codage gbk et la page Web elle-même utilise utf-8 pour le codage. Si vous souhaitez l'exécuter depuis la ligne de commande, vous devez écrire :
Ici
req = req.decode('gbk', 'ignore')
laissez-moi vous expliquer : pour afficher dans l'invite de commande Windows, il doit être décodé en gbk, mais certains caractères de utf-8 lui-même utilisent gbkLe décodage échouera à nouveau, donc le deuxième paramètre ignore est nécessaire. Ce paramètre signifie supprimer les caractères qui ne peuvent pas être décodés.En passant, l'encodage peut également rencontrer ce problème. Par exemple, si vous utilisez la bibliothèque de requêtes pour demander, ce sera la chaîne demandée au lieu du type d'octet. Si vous rencontrez des problèmes d'encodage, vous pouvez également utiliser str. .encode('encoding', 'ingore').decode('decoding') pour résoudre des problèmes similaires.
Si vous ne comprenez pas, vous pouvez lire mon blog
Pour répondre à une question sur le sujet, certaines pages Web conviennent. Il se peut que certaines pages Web utilisent l'encodage GBK ou que le texte soit compatible à la fois avec GBK et UTF-8
On estime que l'encodage par défaut de votre système est gbk, vous pouvez l'essayer
L'exécutez-vous à l'aide de la console Windows ? Parce que le codage par défaut de la console est gbk.

Vous pouvez utiliser l'interpréteur fourni avec Python :
Ou utiliser d'autres outils à la place de la console.
# _*_ coding: utf-8 _*_
Spécifier l'encodage du fichier
Indiquez l'encodage de votre programme.