Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Underline.js中的unescape()函数不起作用_Javascript_Underscore.js_Decoding - Fatal编程技术网

Javascript Underline.js中的unescape()函数不起作用

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 &amp Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!' 要进行

我需要解码html实体,例如:
&
&&96;
&&x27;

正如本文所建议的,我尝试使用中的
\uu.unescape()
来完成此任务

但是,
unescape()
似乎没有任何效果。当我调用它时,例如在以下字符串上,它只返回字符串本身:

const line = 'Tweag I/O | Paris, France &amp Berlin, Germany | Full-time. Give us a shout at jobs@tweag.io!'
要进行验证,可以转到并粘贴以下代码:

const line = 'Tweag I/O | Paris, France &amp 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 = {
  '&': '&',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#x27;',
  '`': '&#x60;'
};
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 = {
  '&': '&amp;',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#x27;',
  '`': '&#x60;'
};
var unescapeMap = _.invert(escapeMap);