Bootstrap

小游戏前端地区获取

目前前端获取除了太平洋,没有其它的了。

//在JS中都是使用的UTF-8,然而requst请求后显示GBK却是乱码,对传入的GBK字符串,要用数据流接收,responseType: "arraybuffer"
tt.request({
    url: "https://whois.pconline.com.cn/ipJson.jsp?json=true",
    data: {},
    header: { 'content-type': 'application/json' },
    method: 'POST',
    dataType: "JSON",
    responseType: "arraybuffer",
    success(res) {
        //获取用户的位置信息
        console.log("获取用户的地区信息");
        var x = new Uint8Array(res.data);
        var str = new TextDecoder('gbk').decode(x);
        console.log(JSON.parse(str).pro + JSON.parse(str).city);
    },
    fail(res) {
        console.log("获取地区信息失败:" + JSON.stringify(res));
    }
});

当然,出包后,TextDecoder会找不到,H5吗阉割版的web,少啥东西,也很正常。

下载两个三方库文件,来源小程序实现GBK编码数据转为Unicode/UTF8 - 超软毛毛虫 - 博客园

引入用require,不要用import,不支持。 

部分代码修改为

var x = new Uint8Array(res.data);
var str = new encoding.TextDecoder('gbk').decode(x);
console.log(JSON.parse(str).pro + JSON.parse(str).city);

 输出

{ip: "xx.1.xx.xx", pro: "北京市", proCode: "1xxxxxx", city: "海淀区", cityCode: "1xxxxxxx", …}

;