2012-06-01 14 views
15

Vorrei codificare il mio URL, ma voglio convertire gli spazi in simboli più.javascript encodeURIComponent e conversione di spazi in + simboli

Questo è quello che ho cercato di fare ...

var search = "Testing this here &"; 

encodeURIComponent(search.replace(/ /gi,"+")); 

L'output che è Testing%2Bthis%2Bhere%2B%26 ma quello che vorrei che fosse è Testing+this+here+%26 Ho provato a sostituire lo spazio con %20 per convertirlo in un plus simbolo, ma non sembra funzionare. Qualcuno può dirmi di cosa sto sbagliando qui?

risposta

34
encodeURIComponent(search).replace(/%20/g, "+"); 

Che cosa si sta facendo male qui è che prima di convertire gli spazi per vantaggi, ma poi encodeURIComponent converte vantaggi a "%2B".

+0

Ciò causerà problemi se la stringa contiene caratteri "reali" '+'. – user2428118

+4

@ user1419007 No non lo farà. Tutti i plus "originali" vengono convertiti in ""% 2B "' e mantenuti da 'replace'. – MaxArt

+0

Ah, stupido, grazie. Ti selezionerò per la migliore risposta quando saranno trascorsi gli 8 minuti. – Ian

-2

You're using the wrong function. Utilizzare escape anziché encodeURIComponent.

var search = "Testing this here &"; 
console.log(escape(search.replace(/ /gi,"+")));​ 
+0

In realtà, non sappiamo perché vuole che la stringa sia convertita. Quindi non c'è modo di sapere cosa è meglio per lui. Per i server IBM iSeries, ad esempio, 'escape' non funziona bene. – MaxArt

+0

In realtà questo è praticamente tutto per l'estetica dell'URL, sto usando gli hashtag per visualizzare la query di ricerca – Ian

+0

'escape()' è [deprecato] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Riferimento/Global_Objects/escape): 'Questa funzione è stata rimossa dagli standard Web. Sebbene alcuni browser possano ancora supportarlo, è in fase di rilascio. Non usarlo in progetti vecchi o nuovi. Le pagine o le app Web che lo utilizzano potrebbero rompersi in qualsiasi momento –

Problemi correlati