Pourquoi est-ce %2B chaîne urldecoded?

[Cela peut ne pas être précisément une question de programmation, mais c'est un casse-tête qui peut être mieux traitées par les programmeurs. J'ai essayé d'abord sur le Pro Webmasters de site, à écrasant silence]

Nous avons une adresse e-mail de vérification des processus sur notre site web. Le site génère d'abord une clé appropriée comme une chaîne de caractères

mykey

Il encode ensuite cette clé comme un tas d'octets

&$dac~ʌ����!

Puis, il base64 encode que des tas d'octets

JiRkYWN+yoyIhIQ==

Depuis cette clé va être donné comme une querystring valeur d'une URL qui doit être placé dans un e-mail HTML, nous devons d'abord URLEncode puis, il HTMLEncode le résultat, nous donnant (il n'y a aucun effet de HTMLEncoding dans le cas de l'exemple, mais je ne peux pas être pris la peine de retravailler l'exemple)

JiRkYWN%2ByoyIhIQ%3D%3D

Ce sont ensuite intégrées dans le code HTML qui est envoyé dans le cadre d'un e-mail, quelque chose comme:

click <a href="http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D">here</a>. 
Or paste <b>http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D</b> into your browser.

Lors de la réception de l'utilisateur clique sur le lien, le site reçoit la demande, des extraits de la valeur de la chaîne de requête paramètre 'key', base64 décode, déchiffre, et fait la bonne chose en termes de la logique du site.

Cependant, à l'occasion, nous avons des utilisateurs qui déclarent que leur cliquant sur est inefficace. Un utilisateur nous a transmis le courriel a été envoyé, et sur l'inspection de l'HTML a été transformé en (à mettre dans les conditions de l'exemple ci-dessus)

click <a href="http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D">here</a>
Or paste <b>http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D</b> into your browser.

Qui est, l' %2B chaîne - mais aucun des autres pourcentage chaînes codées -, avait été transformé en un plus. (C'est certainement laissant nous avec le droit des valeurs - j'ai regardé le journal SMTP).

key=JiRkYWN%2ByoyIhIQ%3D%3D
key=JiRkYWN+yoyIhIQ%3D%3D

Donc je pense que il ya un couple de possibilités:

  1. Il y a quelque chose que je fais c'est stupide, que je ne peux pas le voir, ou

  2. Certains clients de messagerie convertir %2b chaînes de signes plus, peut-être pour essayer de faire face au problème des personnes qui, à tort, Encodage des signes plus

Dans le cas de 1 - c'est quoi? Dans le cas de 2 - est-il un standard, connue façon de traiter avec ce genre de scénario?

Merci beaucoup pour toute aide

OriginalL'auteur Yellowfog | 2013-09-06