当我尝试使用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)
解决了它。