NodeJS 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 

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

有没有办法在节点脚本中从ã£转换为ã

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

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

您确定您是在调用解码URI,而不是取消转义吗?

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

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

然后按照文档querystring.unescape(str)

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

我只是把它留在这里,因为我遇到了同样的问题。当我这样做时,我在客户端和 Nodejs 中使用encodeURIcomponent(str)函数decodeURI(str)遇到了同样的问题。我通过在客户端使用encodeURI(str)解决了它。

最新更新