无法使用 node.js 和 "request" 模块向 UTF-8 link 发出请求

Can't make request to UTF-8 link using node.js and "request" module

出于某种原因,我遇到了 "request" 模块的问题。

var options = {
    protocol: "https",
    host: "euw.api.pvp.net",
    pathname: "/api/lol/euw/v1.4/summoner/by-name/" + name,
    search: "api_key=api-key-deleted"
};
var riotURL = url.format(options);

request(riotURL, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        //doing someting
    }
});

然后就很奇怪了。如果名称很简单,例如 "Dager"、"hi mom" 等,我的应用程序运行良好。但是当我尝试输入 "növentaynueve"、"Mìnou" 之类的名称时 - 我的请求 return 404 响应。

我设法获得了完整的回复文本:http://pastebin.com/8Vra1i4X。我不明白发生了什么。响应中的所有链接都是正确的。但它看起来像请求模块而不是向

发送请求
https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/n%C3%B6ventaynueve?api_key=api-key-deleted

发送请求
https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/n%EF%BF%BDventaynueve?api_key=api-key-deleted

但是为什么呢?

解决了 encodeURI() 函数的问题。

有趣的是:在 Debian 上,即使没有 encodeURI() 它也能正常工作。但是在 Windows 10 上没有。两个源文件都是 UTF-8。