NodeJS decodeURIComponent无法正常工作

时间:2014-02-07 20:56:34

标签: node.js utf-8 character-encoding latin1 decodeuricomponent

当我尝试使用decodeURLCompnent解码nodeJS中的下面的字符串时:

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

我得到了

Ulysses Guimarães - lado par

而不是

Avenida Ulysses Guimarães - lado par 

但是当我在客户端(浏览器)使用相同的代码时,我可以得到正确的字符'ã'。

是否可以在节点脚本中将ã转换为ã

3 个答案:

答案 0 :(得分:5)

我无法在0.10或0.11版本的节点中重现它。

您可以使用new Buffer('Ulysses Guimarães - lado par', 'binary').toString('utf8')将第一个转换为第二个,但这是一种解决方法,而非解决方案。

您确定要调用decodeURI,而不是unescape吗?

答案 1 :(得分:2)

我刚离开这里,因为我有同样的问题。当我encodeURIcomponent(str)遇到同样的问题时,我在客户端和Nodejs中使用decodeURI(str)函数。我在客户端使用encodeURI(str)解决了这个问题。

答案 2 :(得分:0)

使用var querystring = require("querystring");

querystring.unescape()方法对给定str上的URL百分比编码字符进行解码。

根据文档

然后querystring.unescape(str)

https://symfony.com/doc/3.4/service_container.html