Dans l'exemple que tu donnes, c'est le premier print qui affiche des caractères bizarre, pas le deuxième ?
Tu peux donner un exemple de chaîne qui fait ça qu'on puisse tester, parce qu'on ne sait pas ce qu'il y a dans ton fichier.
J'ai testé ta ligne de conversion en binaire chez moi, et même avec des caractères spéciaux et accentués ça n'affiche rien de bizarre, juste des 1 et des 0 comme prévu..
Il faudrait peut-être donner tout le contexte: + système d'exploitation. + comment a été créé le fichier + comment est exécuté le script, par exemple avec cmd sous Windows Je suis sur Windows 10 et j'utilise cmd. Je n'ai pas réussi à reproduire le problème. J'ai tenté de faire quelques chcp pour changer le code, mais ça continue à fonctionner. Par contre, j'avais mis un fichier html avec conversion windows-1252 et j'avais ce genre de caractères bizarres.
Le Tout est souvent plus grand que la somme de ses parties.
Dans l'exemple que tu donnes, c'est le premier print qui affiche des caractères bizarre, pas le deuxième ?
Tu peux donner un exemple de chaîne qui fait ça qu'on puisse tester, parce qu'on ne sait pas ce qu'il y a dans ton fichier.
J'ai testé ta ligne de conversion en binaire chez moi, et même avec des caractères spéciaux et accentués ça n'affiche rien de bizarre, juste des 1 et des 0 comme prévu..
- Edité par LoupSolitaire il y a environ 3 heures
Bonjour et merci pour la reponse
le fichier contient :
"► un énoncé non justifié par un raisonnement rigoureux"
quand je converti en binaire il en sort des 0 et des 1 (pas de problèmes) mais quand je convertie le binaire obtenu en texte j'obtient du chinois :/
quand je converti en binaire il en sort des 0 et des 1 (pas de problèmes) mais quand je convertie le binaire obtenu en texte j'obtient du chinois :/
Le texte est en Unicode.
La fonction ord va retourner des entiers dans l'intervalle 0..0x10FFFF.
On peut toujours en faire une suite de bits mais format(n, '08b') s'assure juste que si le nombre de bits nécessaires est inférieur à 8, ils seront complétés par des 0 en entête.... et pour les codes > 256, vous aurez une longueur variable qui fera foirer le découpage en tranches de 8.
Une solution pour vous en sortir pourrait être d'encoder l'Unicode en latin-1 (ou même en utf-8) vous auriez alors une suite de bytes que vous pouvez transformer en suite de chiffres 0 et 1. L'opération inverse sera de découper en tranches de 8 bits, refabriquer le byte (l'entier) puis le décoder (latin-1 ou utf-8) pour récupérer les caractères (affichés) de départ.
une question, pourquoi dans ton code d'origine tu supprimais les espaces ? les espaces sont des caractères comme les autres, qui a son propre code ASCII/binaire
Blond, bouclé, toujours le sourire aux lèvres...
Le Tout est souvent plus grand que la somme de ses parties.