尴尬的逃脱角色

时间:2017-10-07 13:14:13

标签: javascript node.js mongoose escaping ejs

虽然尝试console.log字符串,但我遇到了一个相当恼人的问题。我将字符串2^{\\frac{1}{2}}x=1存储在Node.js数据库中,但在输出时会给出2^{rac{1}{2}}x=1。我预测了\f转义字符的问题,因此我添加了第二个\来解决这个问题。但问题仍然存在,我对如何修复它感到难过。

查看Mongoose调试输出时,它会清楚地将其正确存储在数据中: enter image description here

它的分配如下:

contentHolder = "<%= testData.topics[i].questions[t].methods[p][0].content %>";

然而,当我跑这条线时:

console.log(contentHolder);

我明白了:

2^{rac{1}{2}}x=1

1 个答案:

答案 0 :(得分:1)

如果你在网络浏览器中查看“来源”,我想你会看到这个:

contentHolder = "<%= testData.topics[i].questions[t].methods[p][0].content %>";

会生成这个:

contentHolder = "2^{\frac{1}{2}}x=1";

当解释JS字符串文字时,\f将被转换为换页符,这显然不是你想要的。

有多种方法可以尝试修复转义,但我想我只是使用JSON.stringify

contentHolder = <%- JSON.stringify(testData.topics[i].questions[t].methods[p][0].content) %>;

可能存在一些边缘情况,这仍然不能完全逃脱,除非您输出的用户输入的值不太可能是一个问题。