新規
・
ツリー
スレッド
未解決
緊急
・
優先
・
検索
・
なでしこTOP
「なでしこv1」開発掲示板
なでしこv1のバグや要望を書き込む掲示板
✏️ 書き込み(
#1986
)を編集する
名前
タイトル
本文
【症状】どのような症状、現象か? JSONエンコードの際、文字列に含まれる、改行やTABや「"」や「\」のエスケープが行なわれない。 【再現方法】サンプルソース、再現手順など ------ 「ab"cd\e」をJSONエンコードして表示。 ------ 今は、 "ab"cd\e" と表示される。このままJSONデコードすると、失敗します。正しくエスケープすると、以下。 "ab\"cd\\e" 【要望】どのような解決が望ましいか? 正しくエスケープを行い、JSONエンコードとJSONデコードを繰り返せばデータが戻るようにしてほしい。 【バージョン】1.5333 【その他】 よく見ると、unit_kabin.pasに謎なコーディングが・・・ -------- if (p.VType = varStr) then begin s := hi_str(p); s := JReplace(s, '\', '\\'); s := JReplace(s, #9, '\t'); s := JReplace(s, #13, '\r'); s := JReplace(s, #10, '\n'); s := JReplace(s, #0, '\0'); Result := '"' + hi_str(p) + '"'; Exit; end; ------------ エスケープする振りして、最後にsではなくpから再取得しています。 また、もともと「"」に対するエスケープがすっぱり抜けているようです。こんな感じでしょうか。エスケープと各型を網羅したテストユニットが合ったほうがよいかもしれません。 ------------ if (p.VType = varStr) then begin s := hi_str(p); s := JReplace(s, '\', '\\'); s := JReplace(s, '"', '\"'); s := JReplace(s, #8, '\b'); s := JReplace(s, #12, '\f'); s := JReplace(s, #9, '\t'); s := JReplace(s, #13, '\r'); s := JReplace(s, #10, '\n'); s := JReplace(s, #0, '\u0000'); Result := '"' + s + '"'; Exit; end; ------------
優先度
低
中
高
緊急
状態
未処理
詳細求む!
調査中
議論中
修正中
確認待ち
再修正依頼
解決
---
重複
---
アイデア
感想
告知
感謝
編集キー
編集時に使うキーを入力(省略可能)
添付ファイル
画像ファイル(最大300KB)を添付可能
Website