nodejs 解决用 got 发起 http 请求中 gbk 与 utf8 编码转换问题

废话不多说直接上代码

const got = require('got')
const iconv = require('iconv-lite')
async function getLocation(ip) {
    const url = 'http://www.ip138.com/iplookup.asp?ip=' + ip + '&action=2'//ip138的网站是gbk编码的
    const res = await got.get(url, {
        encoding: null //关键在于此处的配置,设置为null后res.body就是Buffer了,因此可以直接进行编码转换
        // 2020-12-17 补充:最新版本的 got 需要配置为 'buffer',草梅在此也提醒各位网友,在网上搜解决方案的时候也需要注意版本,很容易找到旧版本的方案。最简单的办法还是看对应版本的官方文档,网友写的也已经是二手的了
    })
    const data = iconv.decode(res.body, 'GBK').match(/本站数据:(.*?)<\/li>/)[1]
    return data
}

以上只是举个例子,其他情况类似处理


评论

发表回复