当我尝试使用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 :(得分: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)
: