Для параметров кодирования URL оба% 20 и + являются допустимыми представлениями пробела, а оба URLVariables.toString () и URLUtil.objectToString () создают совместимое приложение / Данные в формате x-www-form-urlencoded с использованием первого (за ECMA-262 ). Функции encodeURI () , encodeURIComponent () и escape () работают одинаково. Из документов AS3:
flash.net.URLVariables.toString ()
Возвращает строку, содержащую все
перечисляемые переменные, в MIME
кодирование контента
применение / х-WWW-форм-urlencoded. * +1022 *
mx.utils.URLUtil.objectToString ()
Вы обычно используете этот метод для преобразования
объект ActionScript в строку
что вы потом добавляете в конец
URL. По умолчанию недействительный URL
символы в кодировке URL (преобразованы
в формат% XX).
encodeURIComponent ()
Кодирует строку в допустимый компонент URI.
Преобразует подстроку URI в
строка, в которой все символы
закодированы как escape-последовательности UTF-8
если персонаж не принадлежит очень
небольшая группа основных символов.
побег ()
Преобразует параметр в
строка и кодирует его в URL-кодированном
формат, где наиболее не буквенно-цифровой
символы заменяются на%
шестнадцатеричные последовательности.
Вот пример, показывающий использование и вывод всех четырех подходов:
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));
}
Все четыре выдают один и тот же результат (так же, как это делает собственный JavaScript encodeURIComponent ()):
// http://www.google.com/search?q=here%20is%20my%20search%20query
Я согласен, что с плюсом глаза легче! Чтобы поменять их вручную:
trace(url + "q=" + escape(s).split("%20").join("+"));
Но если есть класс ActionScript или функция верхнего уровня, которая использует знаки плюс вместо шестнадцатеричных последовательностей для пробелов, я не знаю об этом.