Qu'est-ce que le texte schéma de codage utilisez-vous lorsque vous avez des données binaires que vous devez envoyer sur un canal ascii?

StackOverflow https://stackoverflow.com/questions/2090009

  •  21-09-2019
  •  | 
  •  

Question

Si vous avez des données binaires que vous devez encoder, ce schéma de codage utilisez-vous?

Je sais:

  • Hex encodage . Très simple, mais assez bavard, se développe un octet à deux.
  • Base 64 . La plupart des communes, pas si bavard, se développe trois octets à quatre.
  • base 85 . Pas courant, moins bavard à nouveau, étend quatre octets à cinq.

Y at-il d'autres schémas de codage en usage courant? Si oui, quels sont-il des avantages et des inconvénients?

Modifier : Ceci est utile, par exemple, lorsque vous essayez de stocker des données arbitraires dans un cookie. Les cookies ne peuvent stocker du texte, pas de données arbitraires, de sorte que vous devez le convertir en quelque sorte, de préférence avec un moyen de reconvertir. En outre, supposons que vous utilisez un serveur sans état afin que vous ne pouvez pas enregistrer l'état sur le serveur et il suffit de mettre un identifiant dans le cookie. Bien sûr, si vous faites cela, vous aurez également besoin d'une certaine façon de vérifier que ce que l'utilisateur passe de nouveau à vous est ce que vous avez passé à l'utilisateur, par exemple une signature.

En outre, puisque le consensus actuel est que vous devez utiliser base64 car il est très répandu, je signale aussi que ce est ce que je l'utilise ... Je suis juste curieux de savoir si quelqu'un utilise autre chose , et si oui, pourquoi.

Modifier : Juste au cas où quelqu'un tombe par hasard sur ce, si vous ne voulez utiliser base64 pour stocker des données dans un cookie, vous devez utiliser une mise en œuvre base64 modifié . Voir cette réponse pour la raison.

Était-ce utile?

La solution

Pour l'encodage des valeurs de cookie, vous devez être prudent. Voir cette réponse plus:

  

Avec la version 0 les cookies, les valeurs doivent   ne contiennent pas d'espace blanc, entre parenthèses,   entre parenthèses, égaux signes , des virgules,   guillemets doubles, barres obliques, question   marques, à des signes, colonnes, et   des points-virgules. Les valeurs vides ne peuvent pas   se comporter de la même manière sur tous les navigateurs.

encodage base64 peut générer des symboles de = pour certaines entrées, ce qui techniquement ne sont pas autorisés dans les cookies (version 0 cookies, de toute façon, qui sont les plus largement pris en charge). Dans la pratique, je soupçonne que le = va effectivement fonctionner correctement, mais peut-être pas.

Je dirais que, pour être absolument sûr que votre binaire est encodée à l'emporte-compatible, puis le codage hexadécimal de base est le plus sûr (par exemple en java ).

modifier Comme souligné @ Paul obligeamment, il y a un

modifier : @shoosh a souligné que le = est utilisé pour indiquer la fin de la chaîne base64, de sorte que vous pouvez couper le =, réglez le cookie, puis reconnectez à nouveau le = lorsque vous avez besoin pour le décoder.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top