411

二重引用符を表示しようとしていますが、円記号の1つが表示されています。

"maingame": {
    "day1": {
        "text1": "Tag 1",
        "text2": "Heute startet unsere Rundreise \\\"Example text\\\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.</strong> "
    }
}

HTMLでレンダリングすると、として表示され\"Example text\"ます。正しい方法は何ですか?

4

7 に答える 7

575

これを試して:

"maingame": {
  "day1": {
    "text1": "Tag 1",
     "text2": "Heute startet unsere Rundreise \" Example text\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir.</strong> "
  }
}

(引用符の前に1つの円記号(\)を付けます)。

于 2013-03-26T12:49:19.573 に答える
57

\\\"代わりにいつどこで使用するか。OK、あなたが私のようなら、このスレッドを見つけた後、私が何をしていたかを理解したときと同じように愚かな気分になります。

.jsonテキストファイル/ストリームを作成し、そこからデータをインポートする場合、二重引用符の前に1つの円記号を付けるだけのメインストリームの答え:\"が探しているものです。

ただし、あなたが私のようで、w3schools.comの「TryitEditor」でJSON.parse(text)の出力に二重引用符を付けようとしている場合、探しているのはトリプルです。バックスラッシュの二重引用符\\\"。これは、HTML<script>ブロック内にテキスト文字列を作成していて、最初の円記号が文字列変数に単一の円記号を挿入し、次の円記号が文字列に二重引用符を挿入して、結果のスクリプト文字列に\"fromが含まれるようにするためです。標準の回答とJSONパーサーは、これを単なる二重引用符として解析します。

<script>
  var text="{";
  text += '"quip":"\\\"If nobody is listening, then you\'re likely talking to the wrong audience.\\\""';
  text += "}";
  var obj=JSON.parse(text);
</script>

+1:JavaScriptのテキスト文字列であるため、二重の円記号の二重引用符\\"も機能します。二重引用符は一重引用符で囲まれた文字列内でエスケープする必要がないためです。たとえば'\"''"'同じJS文字列になります。

于 2016-08-12T16:54:12.967 に答える
19

バックスラッシュもエスケープしているため、バックスラッシュが表示されています。

二重引用符のほかに、JSON引用符で囲まれた文字列に円記号を含める場合は、円記号もエスケープする必要があります。ただし、エスケープシーケンスでバックスラッシュを使用する場合は、明らかにエスケープしないでください。

于 2014-02-22T15:47:47.143 に答える
18

JSONで二重引用符をエスケープする場合は、\\を使用してエスケープします。

次のjavascriptオブジェクトのjsonを作成する場合の例

{time: '7 "o" clock'}

次に、次のように書く必要があります

'{"time":"7 \\"o\\" clock"}'

を使用して解析するとJSON.parse()

JSON.parse('{"time":"7 \\"o\\" clock"}')

結果は

{time: "7 "o" clock"}
于 2017-06-14T11:49:48.210 に答える
11

これは、コンテンツが「二重エンコード」された場合に最も頻繁に発生することに注意してください。つまり、エンコードアルゴリズムが誤って2回呼び出された場合です。

最初の呼び出しは「text2」値をエンコードします。

FROM: Heute startetunsereRundreise「サンプルテキスト」。Jeden Tag wird ein neues Reiseziel angesteuertbiswir。

TO: Heute startet unsere Rundreise\"サンプルテキスト\"。Jeden Tag wird ein neues Reiseziel angesteuertbiswir。

次に、2番目のエンコーディングがそれを再度変換し、すでにエスケープされている文字をエスケープします。

FROM: Heute startet unsere Rundreise\"サンプルテキスト\"。Jeden Tag wird ein neues Reiseziel angesteuertbiswir。

TO: Heute startet unsere Rundreise \\\" Exampletext\\\"。Jeden Tag wird ein neues Reiseziel angesteuertbiswir。

したがって、ここでサーバーの実装を担当している場合は、同じコンテンツをエンコードしようとする2つのステップがないことを確認してください。

于 2014-11-20T16:40:23.667 に答える
6

JSONデータの問題を引き起こすバックスラッシュを回避するために、この関数を使用します。

//escape backslash to avoid errors
var escapeJSON = function(str) {
    return str.replace(/\\/g,'\\');
};
于 2016-05-26T15:24:26.297 に答える
0

開発者のPowerShellを使用したい人のために。settings.jsonに追加する行は次のとおりです。

"terminal.integrated.automationShell.windows": "C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe",
"terminal.integrated.shellArgs.windows": [
    "-noe",
    "-c",
    " &{Import-Module 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\Common7\\Tools\\Microsoft.VisualStudio.DevShell.dll'; Enter-VsDevShell b7c50c8d} ",
    ],
于 2020-06-01T21:49:11.647 に答える