Partage
  • Partager sur Facebook
  • Partager sur Twitter

Conserver les caractères spéciaux dans un string

    12 mars 2018 à 22:56:37

    Salut,

    Je suis actuellement en train de faire un petit projet dont le but est de cacher des messages dans un fil de discussion à ceux qui ont pas le script en se basant sur "espace" et "Alt + 255"

    En gros on met le message à invisibiliser en binaire, on remplace les "0" par une espace et les "1" par un no-break space et on se retrouve avec un message composé entièrement de vide, impossible à traduire pour ceux qui ont pas le script.

    ("msg" => "011011010111001101100111" => [plein d'espaces])          

    Sauf que Python n'accepte pas les no-break space : il les remplace par des "\xa0" à chaque fois que je crée une chaîne où je mets ce caractère.

    ex : "Salut ça va ?" => "Salut\xa0ça\xa0va\xa0?"

    Bref, c'est embêtant. Du coup, vous avez le moyen de conserver le no-break space dans mon code sans le remplacer par une espace normale ?

    Merci.

    -
    Edité par SamGrattlebabaw 12 mars 2018 à 23:02:33

    • Partager sur Facebook
    • Partager sur Twitter
      13 mars 2018 à 0:23:40

      Il remplace rien, c'est la représentation hexa du caractère. C'est pour que ce soit plus explicite.

      En gros c'est juste une manière différente d'afficher la même donnée.

      -
      Edité par LoupSolitaire 13 mars 2018 à 0:24:06

      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

        13 mars 2018 à 17:53:49

        Je vois. Du coup si on exécute le script on se retrouvera avec un no-break space propre ?

        • Partager sur Facebook
        • Partager sur Twitter
          13 mars 2018 à 17:58:50

          Normalement oui, à moins que les incompatibilités d'encodage des caractères viennent compliquer les choses, mais ce sont deux problèmes différents.
          • Partager sur Facebook
          • Partager sur Twitter

          Blond, bouclé, toujours le sourire aux lèvres...

            19 mars 2018 à 12:42:40

            D'acc, merci.

            Et il se passe quoi si on veut écrire "\xa0" dans un texte sans volonté derrière de faire un no-break space ?

            • Partager sur Facebook
            • Partager sur Twitter
              19 mars 2018 à 13:02:05

              On échappe le backslash avec un autre backslash.

              >>> print("\xa0")
               
              >>> print("\\xa0")
              \xa0



              • Partager sur Facebook
              • Partager sur Twitter
                20 mars 2018 à 16:09:39

                C'est expliqué dans la documentation ici : https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

                The backslash (\) character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character.

                • Partager sur Facebook
                • Partager sur Twitter

                Conserver les caractères spéciaux dans un string

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown