J’ai récemment découvert que si j’inclus ‘~’ dans la bio d’un utilisateur, j’obtiens une erreur base64decode de Discourse. Il peut gérer toutes sortes d’autres caractères problématiques sans problème (espaces, =, %, &) mais pas ‘~’ pour une raison quelconque.
Quelqu’un d’autre a-t-il rencontré ce problème ?
Ma première pensée est que mon encodage pourrait être erroné, mais je n’ai pas réussi à le comprendre.
Il devrait probablement être corrigé, mais cette question dépasse mes compétences et mes capacités. Mais par pure curiosité pratique : pourquoi quelqu’un utiliserait-il un tilde dans une bio ?
Heh, je suppose que c’est une question raisonnable.
J’administre un forum multilingue et dans d’autres cultures, le symbole ‘~’ est fréquemment utilisé. Par exemple, en coréen, il est souvent utilisé à la fin pour adoucir le ton, comme dans « Si vous avez des questions, faites-le moi savoir~ ».
Est-ce le cas ? Un bug est quelque chose qui est fait, mais qui ne fonctionne pas. Ceci ressemble plus à une question « est-ce fait ou pas » et alors c’est plutôt une #fonctionnalité si ce n’est pas une question de support.
Il semble que urlsafe_b64encode remplace certains caractères dans l’encodage base64. D’après la documentation :
Encode un objet ssimilaire à des octets en utilisant l’alphabet sûr pour l’URL et le système de fichiers, qui substitue - au lieu de + et _ au lieu de / dans l’alphabet Base64 standard, et retourne les octets encodés. Le résultat peut encore contenir =.
Cela signifie que le résultat n’est pas du base64 standard et ne sera pas compatible avec le décodage de Discourse.
Je recommanderais d’utiliser plutôt la fonction b64encode normale. Votre bibliothèque HTTP devrait s’occuper de l’échappement d’URL si nécessaire.