1. ホーム
  2. node.js

[解決済み] NodeJS ExpressでURLをエンコードする - デコードする方法

2022-03-17 06:44:15

質問

NodeJSをExpressで使用しているのですが、URLに外字を使用すると自動的にエンコードされてしまいます。

デコードして元の文字列に戻すにはどうしたらいいですか?

NodeJSを呼び出す前に、文字をエスケープしています。

だから、文字列が אובמה

になります。 %u05D0%u05D5%u05D1%u05DE%u05D4

これで、URL全体は次のようになります。 http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4

今度はNodeJSで、エスケープされた文字列を取得します。 %u05D0%u05D5%u05D1%u05DE%u05D4 .

これが該当するコードです。

var url_parts = url.parse(req.url, true);
var params = url_parts.query;
var query = params.query; // '%u05D0%u05D5%u05D1%u05DE%u05D4'

試してみた urlquerystring ライブラリがありますが、私のケースには何も当てはまらないようです。

querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'

解決方法は?

18年3月16日更新

escapeunescape 非推奨 .

使用してください。
encodeURIComponent('אובמה') // %D7%90%D7%95%D7%91%D7%9E%D7%94
decodeURIComponent('%D7%90%D7%95%D7%91%D7%9E%D7%94') // אובמה

古い回答

unescape('%u05D0%u05D5%u05D1%u05DE%u05D4') 与える "אובמה"

試してみてください。

var querystring = unescape(query);