Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Forcer une représentation unicode en python 3 [fermés]

0 votes

J'ai un problème avec un webservice qui supporte mal l'utf-8.

Je suis en python 3 et j'ai besoin de transformer mes chaines de caractère comme ceci :

François > Fran\xc3\xa7ois

Aisé en python 2 mais je ne vois pas comment faire en Python 3.

On m'a dit qu'il y avait des masters de l'unicode sur ce forum ;)

fermée avec la mention: J'ai eu un faux positif à un moment donnée. La question n'est plus pertinante. Merci quand même à ceux qui ont jeté un coup d'oeil. Max en particulier :)
demandé 13-Mai-2015 par khamaileon (182 points)
fermés 13-Mai-2015 par khamaileon

Un petit article à lire qui pourrait t'intéresser sur l'encoding en Python 2 et 3 :)

Merci Max,

Je l'avais lu et c'est une bonne référence, je te remercie.

Pour le moment je suis arrivé à ça :

str(bytes('François', 'utf-8')).lstrip("b'")

Je ne sais pas si c'est la manière la plus élégante de le faire.

Il me reste d'ailleurs à retirer le //.

Existe-il une fonction raw string ?

Quel est le type de "François" à la base ? Sur quelle sortie vas-tu envoyer le résultat ? Le webservice qui supporte mal l'utf8, c'est le code que tu modifies, le service duquel tu lis le texte, ou le service vers lequel tu envoies le texte ? Quel encoding supporte-t-il ? Quel est ton but en faisant "François > Fran\xc3\xa7ois" : que ton service ne plante pas, que tu sauve le texte sur cette représentation, que tu envoies le texte sur cette représentation en ascii ? Etc. Donne nous le contexte complet.

Quel est le type de "François" à la base ?
Une string unicode (python 3)

Sur quelle sortie vas-tu envoyer le résultat ?
J'accède à une API via la lib requests. C'est une recherche de nom avec autocompletion.

Le webservice qui supporte mal l'utf8, c'est le code que tu modifies, le service duquel tu lis le texte, ou le service vers lequel tu envoies le texte ?
L'API sur laquelle j'envoie mon texte. Je n'ai des réponse que si j'envoie Fran\xc3\xa7ois sous cette forme. Les résultats sont sous la forme François.

Quel encoding supporte-t-il ?
Officiellement utf-8, dans les faits ça ne fonctionne pas et il n'y a pas de support possible.

Quel est ton but en faisant "François > Fran\xc3\xa7ois" : que ton service ne plante pas, que tu sauve le texte sur cette représentation, que tu envoies le texte sur cette représentation en ascii ?
Récupérer les résultats sous cette réprésentation car l'API ne renvoie que sous ce format. D'ailleurs si j'envoie "Fran", j'ai François dans les résultats de l'autocompletion.

...