在云函数里做http请求,能正常返回数据,但是中文显示是乱码如图:
http请求的代码是这样:
var myurl = event.head + event.market + event.number +event.ending
var httpData= new Promise((resolve, reject) => {
request({
url: myurl,
method: "GET",//GET
}, function (error, response, body) {
if (!error && response.statusCode == 200) {
try {
resolve(body)
} catch (e) {
reject()
}
}
})
})
使用了百度的方法:str = str + decodeURI(encodeURI(testArray[1])),转换回来时也还是乱码,请问怎样才能正常显示出中文呢?
请求的其中一个网址:"https://qt.gtimg.cn/q=sz000001"
============解决办法==========
乱码原因,请求的链接内容是GBK编码
引入jsdom和jquery
使用jquery.get方法,可以解决乱码问题
云函数的package.json加入jsdom和jquery
"dependencies": {
"jquery": "^3.4.1",
"jsdom": "^15.2.1",
"wx-server-sdk": "latest"
}
=============
云函数里
const cloud = require('wx-server-sdk')
const jsdom = require('jsdom');
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;
const jQuery = require('jquery')(window);
cloud.init({
env: '环境ID'
})
// 云函数入口函数
exports.main = async(event, context) => {
return new Promise((rs, rj) => {
try {
jQuery.get('https://qt.gtimg.cn/q=sz000001', (res) => {
rs(res)
})
} catch (e) {
rj(e.message);
}
})
}
用php去抓取内容,转码后回传给小程序