Loading... 今天在做一个获取天气的小功能时,使用的百度的天气API,正常情况下,浏览器直接访问的链接里即使有中文也是可以正常获取到数据的, 但是使用request去请求时,打印了下内容直接给我返回undefined 原因是url规范里是使用unicode编码 在js中提供了几个函数来处理这种情况,而无需在自己写方法 **Javascript函数:encodeURIComponent()** 它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。 因此,“; / ? : @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。 它对应的解码函数是decodeURIComponent()。 **Javascript函数:encodeURI()** encodeURI()是Javascript中真正用来对URL编码的函数。 它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号“; / ? : @ & = + $ , #”,也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。 它对应的解码函数是decodeURI()。 需要注意的是,它不对单引号'编码。 **Javascript函数:escape()** 现在这个函数已经不提倡使用了,实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值 代码示例: 之前代码: ```javascript let localtion = '广州' let url = `https://www.baidu.com/s?wd=${location}` request(url, function(err, response, body) { if (!err && response.statusCode == 200) { console.log(body)//返回undefined } } ``` 修改后 ```javascript let localtion = '广州' localtion = encodeURIComponent(localtion); let url = `https://www.baidu.com/s?wd=${location}` request(url, function(err, response, body) { if (!err && response.statusCode == 200) { console.log(body)//正确返回 } } ``` 最后修改:2021 年 10 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝 赞 0 如果觉得我的文章对你有用,请随意赞赏