在Javascript中陷入奇怪的编码

时间:2011-01-21 09:19:57

标签: javascript character-encoding

我正在使用第三方API(即Read it Later API),我注意到所有字符串都按以下格式返回:

  

的http:&安培;#92; /&安培;#92; /www.fourhourworkweek.com\ /博客&安培;#92; / 2007&安培;#92; / 11&安培;#92; / 07&安培;#92; /如何学习的-b   Philip Greenspun的博客\ u00bb愚蠢的白人批评聪明的中国女人

现在,我知道'\'真的是'\'而且“\ u00bb”真的代表\ u00bb,代表'»'。

但是我究竟如何使用Javascript解码呢?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

答案 2 :(得分:-1)

该字符串看起来已转义,请尝试通过javascript中的unescape(string)函数运行您的字符串,这样可以返回原始版本。