la conversion binaire vers l'utf-8 en python
J'ai un fichier binaire comme ceci:
1101100110000110110110011000001011011000101001111101100010101000
et je veux le convertir en utf-8.
comment puis-je le faire en python?
Ce codage est la chaîne binaire? ASCII? Ou vous voulez dire que les octets sont codé en utf-8 chaîne et que vous souhaitez obtenir une chaîne unicode en python?
Qu'entendez-vous par "convertir en utf-8"? Créer les personnages de la binaire octets?
la chaîne binaire est en utf-8 et oui, je veux recevoir une chaîne unicode en python.
Je pense que nous ne sommes pas comprendre exactement quel type de fichier que vous avez. Pourriez-vous exécuter
ce n'est pas un fichier. J'ai juste un texte en persan et je la convertir en binaire, maintenant, je veux convertir le texte.
Qu'entendez-vous par "convertir en utf-8"? Créer les personnages de la binaire octets?
la chaîne binaire est en utf-8 et oui, je veux recevoir une chaîne unicode en python.
Je pense que nous ne sommes pas comprendre exactement quel type de fichier que vous avez. Pourriez-vous exécuter
hd
ou od
ou similaire hex-utilitaire de vidage et de copier-coller les premières lignes?ce n'est pas un fichier. J'ai juste un texte en persan et je la convertir en binaire, maintenant, je veux convertir le texte.
OriginalL'auteur Aidin.T | 2013-10-08
Vous devez vous connecter pour publier un commentaire.
Cleaner version:
Inverse (de @Robᵩ commentaire):
.decode('hex')
mais il ne fonctionne pas correctement. il montre quelque chose d'autre, pas le premier texte que j'ai juste converti en binaire
essayez-le maintenant. J'ai ajouté
decode('utf-8')
à la fin.Et l'inverse serait:
s=u'نقاب'; print '{:b}'.format(int(s.encode('utf-8').encode('hex'), 16))
Notez que
s = "سلام"
ets = u"سلام"
donner des résultats différents. L'ancien échoue, les dernières œuvres. Mais arrêtons de résoudre le nouveau problème. @Aidin.T, si vous avez un problème avec codage, veuillez ouvrir une nouvelle question.OriginalL'auteur Igonato
Bien, l'idée que j'ai est:
1. Diviser la chaîne en octets
2. Convertir l'octet hexadécimal en utilisant
int
et plus tardchr
3. Se joindre à eux et de décoder la chaîne utf-8 en Unicode
Ce code fonctionne pour moi, mais je ne suis pas sûr de ce qu'il ne l'imprimerie, car je n'ai pas l'utf-8 dans ma console (Windows 😛 ).
Espérons que cette aide!
unichr
Hmmm, je suis un peu méfiant de
unichr
. Parce que l'OP dit sa binaire est déjà en utf-8. utf-8 est variable de caractères, donc j'ai simplement utiliséchr
pour rejoindre le raw octets en une chaîne de caractères et de les décoder plus tard dans Unicode.Je suis en désaccord, en supposant que Python2. Dans cette étape, il est de recueillir des octets, pas de caractères. Seulement après qu'il a codé en utf-8 octet string-t-il à convertir.
C'est mon point de vue. Belle réponse, l'amour de la
split('........')
. Je pense que est fondamentalement la même idée que moi. +1+1 - C'est la même technique que la mienne (donc évidemment j'approuve), en plus de vous expliqué le vôtre. Interlocuteur doit déplacer le vérifier à cette meilleure réponse.
OriginalL'auteur Paulo Bu
Ou, à l'inverse:
OriginalL'auteur Robᵩ
Utilisation:
Vous souhaitez
unichr()
, pas seulementchr()
. docs.python.org/2/library/functions.html#unichrOriginalL'auteur Nacib Neme