erreur Unicode essayez d'appeler Google API de recherche
-
23-10-2019 - |
Question
Je dois effectuer la recherche google pour récupérer le nombre de résultats pour une requête. J'ai trouvé la réponse ici - Google Recherche d'une application Python
Cependant, pour quelques questions que je reçois l'erreur ci-dessous. Je pense que la requête a des caractères unicode.
UnicodeDecodeError: 'ascii' codec ne peut pas décoder octet 0xC3 en position 28: ordinal dans la plage (128)
Je cherchai google et trouvé que je dois convertir à ascii unicode, et trouve ci-dessous le code.
def convertToAscii(text, action):
temp = unicode(text, "utf-8")
fixed = unicodedata.normalize('NFKD', temp).encode('ASCII', action)
return fixed
except Exception, errorInfo:
print errorInfo
print "Unable to convert the Unicode characters to xml character entities"
raise errorInfo
Si je l'action ignorer, il supprime les caractères, mais si je l'utilise d'autres actions, je reçois des exceptions.
Toute idée, comment gérer cela?
Merci
== == Modifier J'utilise le code ci-dessous pour coder puis effectuer la recherche et ce jette l'erreur.
query = urllib.urlencode ({ 'q': SearchFor})
La solution
Vous ne pouvez pas urlencode
chaînes Unicode premières. Vous devez d'abord les coder en UTF-8, puis nourrissez lui:
query = urllib.urlencode({'q': u"München".encode('UTF-8')})
Ce rendement q=M%C3%BCnchen
qui Google accepte avec joie.
Autres conseils
Vous ne pouvez pas convertir en toute sécurité Unicode en ASCII . Cela implique de jeter l'information (en particulier, il jette des lettres non-anglais).
Vous devez faire tout le processus en Unicode, afin de ne pas perdre des informations.