NodeJS Express encodes the URL – how to decode

Issue

I’m using NodeJS with Express, and when I use foreign characters in the URL, they automatically get encoded.

How do I decode it back to the original string?

Before calling NodeJS, I escape characters.

So the string: אובמה

Becomes %u05D0%u05D5%u05D1%u05DE%u05D4

The entire URL now looks like: http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4

Now in my NodeJS, I get the escaped string %u05D0%u05D5%u05D1%u05DE%u05D4.

This is the relevant code:

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

I’ve tried url and querystring libraries but nothing seems to fit my case.

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

Solution

Update 16/03/18

escape and unescape are deprecated.

Use:
encodeURIComponent('אובמה') // %D7%90%D7%95%D7%91%D7%9E%D7%94

decodeURIComponent('%D7%90%D7%95%D7%91%D7%9E%D7%94') // אובמה

Old answer

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

Try:

var querystring = unescape(query);

Answered By – eckymad

Answer Checked By – Gilberto Lyons (AngularFixing Admin)

Leave a Reply

Your email address will not be published.