小游戏前端地区获取
目前前端获取除了太平洋,没有其它的了。
//在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", …}