2017-02-27 420 views
-1

StringEscapeUtils.escapeHtml4を使用してJavaアプリケーションで文字列オブジェクトをエスケープしようとしています。私はcommons-lang3-3.5.jarライブラリを使用しています。Java StringEscapeUtils.escapeHtml4の問題

StringEscapeUtils.escapeHtml4("user001") 

私はコンソールで印刷、出力が"user001"

私は実際に私の二重のQUOTが変換されないようにするlike-に見える - 以下

は私がやろうとしています形式ですここでエスケープ文字。なぜなら、文字列をエスケープした後、私のプログラムはこれを有効な文字列として認識せず、不正な形式のJSonを取得しているからです。これまたはもっと良い方法を処理する方法はありますか?前もって感謝します。

+1

JSONでHTMLをエスケープしているのはなぜですか? HTMLをエスケープすることは、HTML内の文字列を使用することです。 – RealSkeptic

+1

私はcommons-lang3のバージョン3.5を使用して問題を再現できませんでした。 詳細をお知らせください。 – SaWo

+0

'escapeHTML4'はうまく動作し、文字列が' '\" user001 \ "" ' – Magnus

答えて

0

escapeHtml4()の代わりにescapeJava()を使用しないでください。

escapeJava(String input)
JavaのString規則を使用して文字列内の文字をエスケープします。

二重引用符は"に変換されませんが、JSONでは許容されるバックスラッシュを使用してエスケープされます。


あなたはまた、

escapeJson
のpublic static final文字列escapeJson(文字入力)を確認することができます

は、JSON文字列の規則を使用して文字列内の文字をエスケープします。

見つかった値をJson String形式にエスケープします。引用符と制御文字(タブ、バックスラッシュ、CR、FF、など)

+0

@ Raman-Thanksでない限り引用符は表示されません。私はJSonの入力の中にスクリプト注入の可能性を避けたい。このescapeJava()またはescapeJson()で何を使用する必要がありますか? –

+0

@RashmiRanjanmallick彼らはどちらもほぼ同じですが、唯一の違いはJsonでは前方スラッシュ(/)がエスケープされていることです。いずれにしても使用できますが、JSONパーサーで使用する場合は、 'escapeJson()'メソッドを使用する方が良いでしょう。 –

0

は問題がStringEscapeUtils.escapeHtml4()ではないと正しく をチェックします。問題は、あなたのコードがJSONを期待するプレーンな文字列を使用しようとしている可能性があります。

+0

ありがとうございます。私はJSonの入力の中にスクリプト注入の可能性を避けたい。エスケープ・ジャソン()が助けてくれますか? –

+0

私たちと詳細を共有できますか?私は、StringEscapeUtils.escapeHtml4( "user001")メソッドの結果を消費する部分に興味があります。 – SaWo