pour le codage des paramètres d'URL, à la fois 20% et + sont des représentations valides de le caractère d'espace, et les deux URLVariables.toString() et URLUtil.objectToString() émettent application compatible/x-www-form-urlencoded données en utilisant le gabarit (par ECMA-262). Les fonctions encodeURI(), encodeURIComponent() et escape() fonctionnent toutes de la même manière. Des AS3 docs:
flash.net.URLVariables.toString()
Renvoie une chaîne contenant toutes les variables énumérables , dans le codage de contenu MIME application/x-www-form-urlencoded.
mx.utils.URLUtil.objectToString()
Vous utilisez généralement cette méthode pour convertir un objet ActionScript à une chaîne que vous ajoutez ensuite à la fin d'une URL . Par défaut, les URL non valides caractères sont codés en URL (convertis au format% XX).
encodeURIComponent()
encode une chaîne dans un composant URI valide. Convertit une sous-chaîne d'un URI en une chaîne dans laquelle tous les caractères sont codés sous la forme de séquences d'échappement UTF-8 sauf si un caractère appartient à un petit groupe de caractères de base .
escape()
convertit le paramètre en chaîne et code dans un format de code URL , où plus des caractères non alphanumériques sont remplacés par des séquences hexadécimales% .
Voici un exemple montrant l'utilisation et la production des quatre approches:
import mx.utils.URLUtil;
private function test():void
{
var url:String = "http://www.google.com/search?";
var s:String = "here is my search query";
var variables:URLVariables = new URLVariables();
variables.q = s;
var o:Object = new Object();
o.q = s;
trace(url + "q=" + encodeURIComponent(s));
trace(url + variables.toString());
trace(url + "q=" + escape(s));
trace(url + URLUtil.objectToString(o));
}
Les quatre émettent le même résultat (tout comme propre encodeURIComponent de JavaScript() fait):
// http://www.google.com/search?q=here%20is%20my%20search%20query
Je suis d'accord que les signes plus sont plus faciles sur les yeux, cependant! Pour les échanger manuellement:
trace(url + "q=" + escape(s).split("%20").join("+"));
Mais s'il y a une classe ActionScript ou la fonction de haut niveau qui utilise des signes plus au lieu de séquences hexagonales pour les espaces, je ne suis pas au courant.
C'est une réponse complète si j'en ai jamais lu une. :) –
Chaîne "C++ est amusant "lorsqu'il est codé par escape (s) .split ("% 20 "). join (" + ") est" C+++ is + fun ", ce qui est impossible à décoder en original. pour le premier% 2B, n'est-ce pas? – jedierikb
Bon, c'est un bon point (Personnellement, je n'aime pas l'idée d'échanger les signes plus, de toute façon.) –