如何将编码值与解码值

时间:2017-11-30 13:51:00

标签: javascript encoding

这里我试图将选项标签中的值与带有JSON对象的值进行比较。

我有2种数据表格

格式-1 - 已解码

<li>please click <a target="_blank" href="https:app.answers/detail/a_id/140">here</a></li>

格式-2 - 编码

&lt;li&gt;please click &lt;a target=&quot;_blank&quot; href=&quot;https://app.answers/detail/a_id/140&quot;&gt;here&lt;/a&gt;&lt;/li&gt;

在下面的代码中,我使用unescape来解码编码值和 使用解码值进行比较并进行检查,因为选项值采用解码格式。

     for(j=0;j<multiValues.length;j++){
                var escapedVal = unescape(multiValues[j]);                               
                console.log(escapedVal); //this was suppose to show <li>please click <a target="_blank" href="https:app.answers/detail/a_id/140">here</a></li>   but its showing  &lt;li&gt;please click &lt;a target=&quot;_blank&quot; href=&quot;https://app.answers/detail/a_id/140&quot;&gt;here&lt;/a&gt;&lt;/li&gt;
$(v).find('option[value="'+escapedVal[j]+'"]').prop('selected',true).attr("selected","selected");
              }

当我在控制台中记录escapedVal时,它仍然只以编码格式显示。但我想解码格式2并将其与format 1进行比较,因为format 1已经被解码。我只是在选项值中进行比较,但我没有在任何地方显示它。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您需要首先解码,然后比较

function decodeHTML( str )
{
  var div = document.createElement( "div" );
  div.innerHTML = str;
  return div.innerText;
}

<强>演示

function decodeHTML( str )
{
  var div = document.createElement( "div" );
  div.innerHTML = str;
  return div.innerText;
}
var value = '<li>please click <a target="_blank" href="https://app.answers/detail/a_id/140">here</a></li>';
var encodedValue = '&lt;li&gt;please click &lt;a target=&quot;_blank&quot; href=&quot;https://app.answers/detail/a_id/140&quot;&gt;here&lt;/a&gt;&lt;/li&gt;'
var recoveredValue = decodeHTML( encodedValue );

console.log( value == recoveredValue )