5

当我尝试使用 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 

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

有没有办法在 Node 脚本中从ã转换为 ã ?

4

3 回答 3

6

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

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

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

于 2014-02-08T00:30:40.920 回答
4

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

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

然后querystring.unescape(str)根据文档:

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

于 2018-05-14T20:57:41.837 回答
1

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

于 2015-09-22T07:22:15.087 回答