Javascript – urlencode

Author: Adrià Cidre  |  Category: PHP

Hay veces en que la función de javascript escape() no es suficiente, como por ejemplo si hay que codificar ‘?’. No sé exactamente cuando ni donde encontré esta función que imita el urldecode de PHP pero migrada a javascript, espero que os sea tan útil como a mi.


function urlencode( str ) {

    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();

    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };

    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';

    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);

    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }

    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });

    return ret;
}

4 Responses to “Javascript – urlencode”

  1. Francisco Says:

    Me ha sido muy útil.

    Muchas gracias!

  2. Pablo Reyes Says:

    Muchas gracias! he usado la funcion en http://www.niavatar.com (versión china de http://www.armatudisplay.com), porque la que tenía no codificada caracteres chinos.

    Un saludo!!

  3. salvacur Says:

    muy util
    gracias

  4. Paco Says:

    Diosss, la de problemas que he tenido hasta que he dado con esta función..
    I love you

    PD: fuck JS

Leave a Reply