2011-01-21 56 views
0

我與第三方API工作(即之後閱讀API),我注意到,在下面的格式返回所有的字符串:套牢奇怪的編碼在Javascript

HTTP:&# 92;/\ /www.fourhourworkweek.com \ /博客\/2007 \/11 \/07 \ /如何學習的-b 菲利普·格林普斯的博客\愚蠢的白人男子批評聰明的中國女人

現在,我知道'\'真的是'\',而「\ u00bb」真的代表了「»」。

但我究竟破譯這個使用Javascript?

回答

2

該字符串已被JavaScript轉義,然後被HTML編碼。

所以首先要對HTML解碼:

var foo = "http:\/\/www.fourhourworkweek.com\/blog\/2007\/11\/07\/how-to-learn-b Philip Greenspun's Weblog \u00bb Stupid white man criticizes smart Chinese woman"; 

var element = document.createElement('div'); 
element.innerHTML = foo; 
foo = element.firstChild.data; 

,然後JavaScript的。

不幸的是,我不知道這樣做的好方法,所以我正在訴諸於eval。請評論,如果你能找到更好的方法!

foo = eval("'" + foo.replace("'", "\\'").replace('\n', '\\n') + "'"); 
alert(foo); 
0

你爲什麼不使用str.replace?就像這樣:

var str="http:\/\/www.fourhourworkweek.com\/blog\/2007\/11\/07\/how-to-learn-b Philip Greenspun's Weblog \u00bb Stupid white man criticizes smart Chinese woman"; 
    str=str.replace (/\/ig,"\\"); 

結果上JSfiddle

+0

它只在這種情況下工作,但它不是一個通用的解決方案。 – acme 2011-01-21 10:41:49

-1

的字符串看起來逃脫,試圖通過在JavaScript中unescape(string)功能運行你的字符串,這應該給你回原來的版本。

+0

該字符串已被轉義,兩次使用兩種不同的編碼方案。 `unescape`從第三種編碼方案中解碼(所以它根本沒有幫助)並且不管怎樣都被棄用了。 – Quentin 2011-01-21 10:13:57

+0

我的錯誤,謝謝你解釋。 – ilivewithian 2011-01-21 10:15:28