NodeJS decodeURIComponent not working properly

24,030

Solution 1

I cannot reproduce it in 0.10 or 0.11 versions of node.

You can convert first to second using new Buffer('Ulysses Guimarães - lado par', 'binary').toString('utf8'), but it's a workaround, not a solution.

Are you sure you're calling decodeURI, not unescape?

Solution 2

Use var querystring = require("querystring");

The querystring.unescape() method performs decoding of URL percent-encoded characters on the given str.

and then querystring.unescape(str) as per docs:

https://nodejs.org/api/querystring.html#querystring_querystring_unescape_str

Solution 3

I'm just leaving this here, because I had the same problem. I was using the encodeURIcomponent(str) function in the client and in Nodejs when I did decodeURI(str) had the same problem. I solved it by using encodeURI(str) at the client.

Share:
24,030
nanndoj
Author by

nanndoj

http://nanndoj.com

Updated on July 05, 2022

Comments

  • nanndoj
    nanndoj almost 2 years

    When I tryed to decode the string below in nodeJS using decodeURLCompnent:

    var decoded = decodeURI('Ulysses%20Guimar%C3%A3es%20-%20lado%20par');
    console.log(decoded);
    

    I got

    Ulysses Guimarães - lado par
    

    Instead of

    Avenida Ulysses Guimarães - lado par 
    

    But when I use the same code on the client side (browser) I can get the right char 'ã'.

    Is there a way to convert from ã to ã in a Node script?