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