2013-04-10 47 views

Odpowiedz

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

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

Edytuj - Usunąłbym powyższą odpowiedź, gdybym mógł.

Pierwotne pytanie jest nieco niejednoznaczne.

console.log('\u003cb\u003estring\u003c/b\u003e'); będzie już otrzymując <b>string</b>

Jeżeli \ postacie uciec, to wówczas sposób wymiany można stosować w celu zastąpienia \\ z tylko \, umożliwiając w ten sposób właściwą sekwencję wyjściową Unicode.

+0

Zauważ, że napis był już '' ciąg. 'decodeURIComponent' nic nie zrobił. http://jsfiddle.net/ZAXux/. Oto jsfiddle do pokazania, że ​​'decodeURIComponent' nic nie robi, gdy łańcuch jest dosłownie' \ u003cb \ u003estring \ u003c/b \ u003e' http://jsfiddle.net/ZAXux/1/ – Esailija

+0

@Eailailija Twój drugi jsFiddle ma dodatkowe "\ " postać. Jeśli chodzi o twoje pierwsze zdanie, co masz na myśli "nic nie robisz"? –

+1

W javascript musisz napisać '' \\ u "', aby dosłownie uzyskać '\ u'. Jeśli nie unikniesz ukośnika odwrotnego i napisz "\ u" ', zostanie to zinterpretowane jako sekwencja specjalna Unicode. Przez nic nie mam na myśli, że nic nie robi i może zostać usunięty bez żadnych zmian, jak pokazuje pierwszy jsfiddle. A więc: 'decodeURIComponent ('\ u003cb \ u003estring \ u003c/b \ u003e'); === '\ u003cb \ u003estring \ u003c/b \ u003e'' – Esailija

13

To jest dupka z How do I decode a string with escaped unicode?. Jedną z odpowiedzi udzielonych powinno działać:

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

wyjściowa:

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

jesteś geniuszem ... :) –

+0

Najlepsza odpowiedź do tej pory! – mafonya