2013-04-10 5 views

risposta

6
decodeURIComponent('\u003cb\u003estring\u003c/b\u003e'); 

// "<b>string</b>" 

Edit - vorrei eliminare la risposta di cui sopra, se potessi.

La domanda originale è un po 'ambigua.

console.log('\u003cb\u003estring\u003c/b\u003e'); sarà già produrrà <b>string</b>

Se i \ caratteri sono sfuggiti, quindi un metodo di sostituzione possa essere usato per sostituire \\ con solo \, permettendo così la corretta sequenza di escape Unicode.

+0

Nota che la stringa era già 'stringa'. 'decodeURIComponent' non ha fatto nulla. http://jsfiddle.net/ZAXux/. Ecco un jsfiddle per mostrare 'decodeURIComponent' non fa nulla quando la stringa è letteralmente' \ u003cb \ u003estring \ u003c/b \ u003e' http://jsfiddle.net/ZAXux/1/ – Esailija

+0

@Esailija Il tuo secondo jsFiddle ha un extra "\ " carattere. Per quanto riguarda la tua prima affermazione, cosa intendi con "non fa nulla"? –

+1

In javascript è necessario scrivere '" \\ u "' per ottenere '\ u' letteralmente. Se non esci dalla barra retroversa e scrivi '" \ u "', viene interpretato come una sequenza di escape Unicode. Con niente intendo che non fa nulla e può essere rimosso senza alcun cambiamento come mostra il primo jsfiddle. Quindi: 'decodeURIComponent ('\ u003cb \ u003estring \ u003c/b \ u003e'); === '\ u003cb \ u003estring \ u003c/b \ u003e'' – Esailija

13

Questo è un numero di How do I decode a string with escaped unicode?. Una delle risposte date non dovrebbe funzionare:

var x = '\\u003cb\\u003estring\\u003c/b\\u003e'; 
JSON.parse('"' + x + '"') 

uscita:

'<b>string</b>' 
+0

sei un genio ... :) –

+0

La migliore risposta finora! – mafonya