问题描述在http://www.gpsspg.com/maps.ht...但是使用Node.js得到的返回值如下leturl='https://apis.map.qq.com/jsapi?qt=poi&wd='+encodeURI(name);returnawaitnewPromise((resolve,reject)=>{request({url:url,json:true,headers:{'charset':'utf8','Content-Encoding':'identify'}},函数(错误,response,body){if(!error&&response.statusCode\==200){console.log(body)//打印google主页resolve(body);}else{reject(error)}})})problem分析在控制台查看网页中的请求,发现返回的header的charset为gb18030,Node.js无法解码中文字符集,需要转码解决方案consticonv\=require('iconv-lite');consthttps\=require("https");varBufferHelper\=require('bufferhelper');varurl\='https://apis.map.qq.com/jsapi?qt=poi&wd='+encodeURI(name);returnawaitnewPromise((resolve,reject)=>{https.get(url,function(res){varbufferHelper\=newBufferHelper();res.on('data',function(chunk){bufferHelper.concat(块);});res.on('end',function(){console.log(iconv.decode(bufferHelper.toBuffer(),'GB18030'));});})})注意:这里的关键是在接收到https返回的数据时,将数据压入buffer中,如果用iconv进行字节转码不行的话,再统一转码到buffer中。
