1

以下をノードに投稿すると(簡略化された例):

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/action");
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify({path:encodeURIComponent("E:\foo\bar.baz")}));

node.js コード:

app.post('/action', function (request, response) {
    var file = request.body['path'];
    console.log(file);
    console.log(decodeURIComponent(file));
});

次の出力が得られます。

E%3A%0Coo%08ar.baz
E:♀oar.baz

これを正しくデコードするにはどうすればよいですか?

4

1 に答える 1

3

バックスラッシュはエスケープ用に予約されているため、パスに特殊文字をエンコードしています。

\f Form feed

\b Backspace

エンコードすると、これらは次のようになります。

%0C

%08

MDNから:

文字列内にリテラル バックスラッシュを含めるには、バックスラッシュ文字をエスケープする必要があります

"E:\\foo\\bar.baz"

于 2012-11-19T18:24:28.467 に答える