AS3 строка используется для преобразования в x-www-form-urlencoded? - PullRequest
0 голосов
/ 14 февраля 2009

Есть ли библиотека для преобразования строк в as3 в формат application / x-www-form-urlencoded?

В частности, я ищу ту же функциональность, что и Java URLEncoder http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html

К сожалению, функции escape и encodeURIComponent as3 этого не делают. Например, множество% 20 вместо +.

Ответы [ 2 ]

7 голосов
/ 14 февраля 2009

Для параметров кодирования 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 или функция верхнего уровня, которая использует знаки плюс вместо шестнадцатеричных последовательностей для пробелов, я не знаю об этом.

0 голосов
/ 29 июля 2014

Я хотел бы добавить, что escape и encodeURIComponent даст тот же результат, только если строка в не mutlibyte. В случае многобайтовой строки, такой как ñ (на испанском языке) escape () не будет корректно кодировать значение. с использованием encodeURIComponent и decodeURIComponent. Я обнаружил трудный путь, пытаясь использовать escape () для многобайтовой строки с помощью нового navigateToURL (new URLRequest (который будет молча завершаться при использовании mailto URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...