2017-09-06 5 views
0

J'utilise python 3.5Convertir des octets en ASCII et sauvegarder en Python?

J'ai deux ou trois chaînes d'octets représentant le texte qui est encodée dans différents codecs si: b'mybytesstring', maintenant certains sont Utf8 encodées autres sont latin1 et ainsi de suite. Ce que je veux dans l'ordre suivant est:

  • transformer la chaîne d'octets en une chaîne de type ascii.
  • transforme la chaîne ascii en une chaîne d'octets.
  • décoder la chaîne d'octets avec le codec correct.

Le problème est que je dois déplacer la chaîne d'octets en quelque chose qui n'accepte pas des objets octets, donc je suis à la recherche d'une solution qui me permet de faire bytes -> ascii -> bytes en toute sécurité.

+0

Voulez-vous dire que vous avez différents 'bytes' objets, chaque encodées différemment? Je ne comprends pas ce que vous voulez faire 'bytes --ascii -> str - ??? -> bytes'? –

+0

oui J'ai un groupe de 'bytes' objets ont tous des codages différents. J'ai besoin de les mettre tous dans un conteneur qui n'accepte pas les objets 'bytes' seulement les objets' string'. Ensuite, je les sorte du conteneur et je peux les décoder correctement avec l'encodage correct. – Thagor

Répondre

0

OK, je trouve une solution qui est beaucoup plus facile que je pensais

mybytes = 'ëýđþé'.encode() 
str_mybytes = str(mybytes) 
again_mybytes = eval(str_mybytes) 
decoded = again_mybytes.decode('utf8') 
1
x = x.decode().encode('ascii',errors='ignore') 
0

Vous utilisez les méthodes encode et decode pour cela, et fournir le codage souhaité pour eux. Ce n'est pas clair pour moi si vous connaissez l'encodage à l'avance. Si vous ne le savez pas, vous avez des problèmes. Vous devrez peut-être deviner l'encodage d'une manière ou d'une autre, risquant ainsi la sortie des ordures.

+1

Si vous ne connaissez pas l'encodage, vous pouvez essayer d'utiliser [chardet] (https://pypi.python.org/pypi/chardet) pour deviner. – Eric