2017-03-28 4 views
2

次の問題があります。私はajax呼び出しからのデータストリームを使用するアプリケーションを構築していますので、来るデータはjson文字列の中でエスケープされます。DOMに挿入するとUTF-8シンボルが変換される

例:1°Set

私はDOMにデータが、それはこのように変換されていることを挿入します。1°Set

私はjQueryの、純粋なJavascriptのような任意のライブラリを使用してはいけません。

は、私は別の場所でも、変換された名前を保存しようとしましたが、私はそれを手動で変換することができないよう、私は次の機能を試してみました:

var test = function(str) { 
    console.log(unescape(encodeURIComponent(str))); 
    console.log(decodeURIComponent(escape(str))); 
}; 

test('1°Set'); 

それは誰もがそれを変換する方法のアイデアを持っていない、同じままDOMのようなバージョン?

+0

'テスト( 'こんにちは ')'や 'テスト(' ')'の予想出力は何ですか? – Kos

+0

私はこの質問を理解できませんか? '°'は度記号のHTMLシンボルです。明らかにこれをHTMLに入れると、度の記号が表示されます。それがポイントです。あなたは何をしたいのですか? – Liam

+0

@ Liam文字列を表すHTMLソースを実際の文字列に変換することについて質問があります。 – Kos

答えて

2

私は以下の問題があります。私は、ajax呼び出しからのデータストリームを使用するアプリケーションを構築しているため、来るデータはjson文字列の中でエスケープされます。

例:代わりに文字列「1度セット」の

{ 
    "something": "1°Set" 
} 

あなたは」:あなたが問題を抱えているようなあなたのバックエンドがどのように見えるJSONを提供していますので、1°Set

が鳴ります「1°Set」に相当するHTMLソースコードを提供する。これは非常に不要です。 JSONの内部でHTMLエスケープを使用する正当な理由はありません。実際にはJSONに実際のHTMLソース(書式など)の一部が文字列ではなく実際に含まれないようにする必要があります。

私の提案:のは簡単なそれを維持しようと代わりのようなものに役立つ:

{ 
    "something": "1°Set" 
} 

または同等にJSONの構文を使用して、それを適切にエスケープを:

{ 
    "something": "1\u00b0Set" 
} 

今ではJavaScriptをプレーンな文字列を受け取ることになりますよ例えばelement.textContentまたはelement.valueまたは他の場所に簡単に表示することができます。あなたはコンバージョンも必要ありません。

+0

JSONを他の場所から取得していてフォーマットを変更できない場合は、私たちは別のものを探します。出発点:http://stackoverflow.com/questions/5796718/html-entity-decodeまたはhttps://www.npmjs。com/package/html-entities – Kos

+0

私はサーバーへのアクセス権を持っているので、これをすべて実行しました。ストリームを変更するのではなく、ローカル変換で悩まされるでしょう。 – Mevia

関連する問題