用于转换字符实体的Javascript等效项

时间:2018-02-14 20:29:14

标签: javascript character-encoding html-entities html-encode

我有以下html片段,其中javascript嵌入了一行。

<div class="social_icon twitter" onclick="shareSocialWall('twitter','New Comment on xxxx - WTF, if the dancers don&amp;acirc;&amp;#128;&amp;#153;t come in until 4ish','https:/xxxx')"></div>

正如您所看到的那样,onclick事件会触发shareSocialWall。这里重要的是文本dancers don&amp;acirc;&amp;#128;&amp;#153;t

当文本传递给函数shareSocialWall时,接下来会发生什么:

 location='https://twitter.com/intent/tweet?text='+text+'&url='+encodeURIComponent(url);

问题是文本正在中断执行此tweet的调用。有没有办法在javascript中编码这个文本,所以它不会破坏文本。

此文字的路径为:

- perl => encodes entities on comment text as xml node
- xslt => passes xml text to javascript function (uses disable output encoding which does nothing for this apparently)
- js => handles the text inside the shareSocialWall Function

1 个答案:

答案 0 :(得分:0)

您的文字似乎已被破坏,可能是错误的双重编码。

您可以使用正则表达式删除所有HTML实体:

&#13;
&#13;
var str = 'New Comment on xxxx - WTF, if the dancers don&amp;acirc;&amp;#128;&amp;#153;t come in until 4ish';
console.log(str.replace(/&[^\s]*;/g, ''));
&#13;
&#13;
&#13;

请注意,这非常具有攻击性,如果您的文字编码错误,可能会删除超出您希望的文字,例如缺少;