Javascript Underline.js中的unescape()函数不起作用
我需要解码html实体,例如:Javascript Underline.js中的unescape()函数不起作用,javascript,underscore.js,decoding,Javascript,Underscore.js,Decoding,我需要解码html实体,例如:&,,,“,&&96;和&&x27; 正如本文所建议的,我尝试使用中的\uu.unescape()来完成此任务 但是,unescape()似乎没有任何效果。当我调用它时,例如在以下字符串上,它只返回字符串本身: const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!' 要进行
&代码>,
,
,“
,&&96;
和&&x27;
正如本文所建议的,我尝试使用中的\uu.unescape()
来完成此任务
但是,unescape()
似乎没有任何效果。当我调用它时,例如在以下字符串上,它只返回字符串本身:
const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
要进行验证,可以转到并粘贴以下代码:
const line = 'Tweag I/O | Paris, France & Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
console.log(line)
const decodedLine = unescape(line)
console.log(decodedLine)
不要忘记从点击添加库
按钮时出现的下拉列表中选择subline.js
库来添加它
更新
如@DanPrince的回答所述,unescape()
仅解码有限的字符集:
,,,,,,,,,和#96代码>,'代码>
但是,将我的行从上面的示例更改为下面的示例仍然不起作用;t工作(即使这次我使用了&x27;
和&;
):
最后更新
我用另一个图书馆解决了我的问题。我现在使用的不是underline.js
,而是提供了我想要的功能
现在,我只需调用decode(line)
,所有html实体都会得到正确的翻译。但是,我将继续回答这个问题,并接受解释为什么unescape()
无法按预期工作的答案。查看下划线,所有内容都通过以下映射进行转换
var escapeMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`'
};
var unescapeMap = _.invert(escapeMap);
var escapeMap={
“&”:“&;”,
'': '',
'"': '"',
“'”:'';',
“`:”`;'
};
var unescapeMap=u0.invert(escapeMap);
字符串中的两个转义实体是/
和&
,它们都不显示在转义映射中。您可以修复&代码>通过添加分号
虽然它不是特别有效,但您可以使用
另外,当我在jsbin中使用.unescape
时,我得到了预期的行为,而我认为您的代码使用了本机unescape
函数。感谢您提供有关映射字符的提示!但奇怪的是,这对任何一个都不起作用。。。我将正在测试的字符串更改为“Tweag I';O|巴黎、法国和法国;柏林,德国|全职。向我们喊一声jobs@tweag.io!'代码>。在这个版本中,我有&代码>以及”和#x27代码>,但在我的JSBin中它仍然不起作用…哦。这是否像unescape
与\uu.unescape
一样简单?argh。。。是的,这在jsbin中确实有效!对不起,我是一个js新手,从来都不知道这些微妙之处!一点也不,我应该早就发现了。浏览器包括一个用于解码URI的本机函数。
var escapeMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`'
};
var unescapeMap = _.invert(escapeMap);