2017-10-07 23 views
0

console.logの文字列を試している間に、私はむしろ迷惑な問題に遭遇しました。文字列2^{\\frac{1}{2}}x=1をNode.jsデータベースに格納しますが、出力するときは2^{rac{1}{2}}x=1となります。私は\fエスケープ文字の問題を予測していたので、その問題を回避するために2番目の\を追加しました。しかし問題は残っており、私はそれをどのように修正するかについて困惑している。厄介なエスケープ文字

console.log(contentHolder); 
:私はこの行を実行したときしかし

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

enter image description here

それは、次のように割り当てられている:それは明らかに正しくデータに格納するマングースのデバッグ出力を見ると

私はこれを得ます:

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

答えて

1

あなたは私が想像して、Webブラウザの「ソース」を見る場合は、このことがわかります:リテラルそのJS文字列が解釈されると

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

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

がこれを生成しているだろう\fはフォームフィード文字に変換されます。これは明らかにあなたが望むものではありません。

ありますが、エスケープを修正しようとすることができ、様々な方法があるが、私は、私はちょうどJSON.stringifyを使用したいと思う:

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

これはまだかなりエスケープ権利を取得していないいくつかのエッジケースがあるかもしれませんが、ユーザーが入力した値が問題となる可能性は低い場合を除き、

+0

私はすでにあなたの答えの前にそれを修正しましたが、あなたの答えはかなり私がそれを修正したものです。 –