2016-01-03 22 views
6

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

元の文字列に戻すにはどうすればよいですか?

NodeJSを呼び出す前に、私はエスケープ文字を使用します。

ように文字列:URL全体が今のように見えるאובמה

%u05D0%u05D5%u05D1%u05DE%u05D4

次のようになります。私のNodeJSで今http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4

、私はエスケープされた文字列%u05D0%u05D5%u05D1%u05DE%u05D4を取得します。私はurlquerystringライブラリを試してみたが、何も私の場合に合うように思わない

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

これは、関連するコードです。

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

答えて

9

更新25/07/17

escapeunescapedeprecatedです。使用


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);

+0

まあ簡単でした、ありがとう! – AlexD

+5

これは長い年月が経ちません:http://cwestblog.com/2011/05/23/escape-unescape-deprecated/ –

+0

代わりに 'querystring.unescape(str)'を使用してください – Rsh

12

外国語のURLをエンコード/デコードするには、decodeURI()encodeURI()を使用する必要があります。

用途:MDNの

var query = 'http://google.com'; 
query = encodeURI(query); 
query = decodeURI(query); // http://google.com 

参考:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI

+0

私はExpressを使っています私は部分的なURLだけをparamsで持っています。したがって、 'decodeURI(query)'は 'malformed uri'エラーを返します。私はこの場合どのように私がそれを使用できるかわかりません。 – AlexD

+1

'encodeURIComponent'と' decodeURIComponent'を使います。これらは、エンコードする必要がある完全なURIを持っていない場合に有効です。 – Stephan

関連する問題