Convertir unicode en utf-8 chaîne, comme le contenu de str
Je suis en utilisant pyquery pour analyser une page:
dom = PyQuery('http://zh.wikipedia.org/w/index.php', {'title': 'CSS', 'printable': 'yes', 'variant': 'zh-cn'})
content = dom('#mw-content-text > p').eq(0).text()
mais ce que je reçois dans content
est une chaîne unicode en utf-8 contenu codé:
u'\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8...'
comment pourrais-je le convertir en str
sans perte de contenu?
de préciser:
Je veux conent == '\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8'
pas conent == u'\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8'
Vous pouvez l'habitude de traiter des chaînes unicode comme des chaînes de caractères. Est-il une raison pourquoi vous voulez le convertir?
Aussi, pour plus d'informations sur Unicode, ASCII et la comme je te recommande: nedbatchelder.com/text/unipain.html
si j'ai l'impression
serait
Non, il n'est pas, que serait - double encoder les données UTF-8.
Aussi, pour plus d'informations sur Unicode, ASCII et la comme je te recommande: nedbatchelder.com/text/unipain.html
si j'ai l'impression
content
, je viens d'obtenir une étrange chaînesserait
content.encode('utf-8')
faire l'affaire? Aussi, je pense que Wikipédia a une bonne API pour interroger les articles, pas besoin de gratter le site web.Non, il n'est pas, que serait - double encoder les données UTF-8.
OriginalL'auteur wong2 | 2013-01-26
Vous devez vous connecter pour publier un commentaire.
Si vous avez un
unicode
de la valeur avec de l'UTF-8 octets, encoder de Latin-1 afin de préserver les octets:parce que l'Unicode codepoints U+0000 à U+00FF tous les carte un-à-un avec le codage latin-1; ce codage en conséquence l'interprète de vos données littérales octets.
Pour ton exemple, cela me donne:
PyQuery
utiliserequests
ouurllib
pour récupérer le code HTML, et dans le cas derequests
, utilise le.text
attribut de la réponse. Cette auto-décode les données de réponse basé sur de l'encodage dans unContent-Type
en-tête seul, ou si cette information n'est pas disponible, utiliselatin-1
pour cela (pour le texte des réponses, mais le HTML est une réponse texte). Vous pouvez la remplacer en le passant dans unencoding
argument:à quel point vous seriez pas avoir à ré-encoder à tous.
Le codage UTF-8 est bien si c'est ce dont vous avez besoin à la fin. Mais vous pouvez sauter le décoder puis aussi!
Eh bien, je vais être, je devrais l'avoir essayé que si je pouvais me sauver certains auto-infligé un traumatisme à la tête. Je dois admettre cependant, il confond encore moi.
Grâce! Été torturé par la même question pour un jour!
merci beaucoup pour cette solution de contournement. J'ai été en mesure de convertir tamil unicode dans un format lisible.
OriginalL'auteur Martijn Pieters