QuickApp 快應用中 或 nodejs 中 API接品呼叫時 GBK轉UTF8
阿新 • • 發佈:2020-11-02
請求介面地址:https://doc.quickapp.cn/features/system/fetch.html?h=fetch
第一步,安裝包:
npm install iconv-lite
async onInit() { var prompt = require('@system.prompt'); { // 這是轉換前的GBK var resultFetchOld = await fetch.fetch({ url: 'http://ip.ws.126.net/ipquery', responseType: 'text', method:'GET', headers: { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'cache-control': 'no-cache', 'pragma': 'no-cache',}, }); console.log('顯示轉換前的結果: ', resultFetchOld.data.data, '4秒後顯示轉換後的結果');// 顯示轉換前的結果 setTimeout(function () { var htmlStr = '顯示轉換前的結果: ' + resultFetchOld.data.data + ',4秒後顯示轉換後的結果' prompt.showToast({ message: htmlStr }); }, 0); } var resultFetch = await fetch.fetch({ url: 'http://ip.ws.126.net/ipquery', responseType: 'arraybuffer',// responseType: 'text', method: 'GET', headers: { 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'cache-control': 'no-cache', 'pragma': 'no-cache', }, }); // console.log('resultFetch', resultFetch); // console.log('resultFetch.data.data', resultFetch.data.data) // console.log('resultFetch.data.data-stringify', JSON.stringify(resultFetch.data.data)); //這裡是引入包 const Buffer = require('buffer').Buffer; // 這個包為 nodejs 自帶,無需安裝 const iconvLite = require('iconv-lite'); // let b1 = new Uint8Array(ipHtmlResult.data.data); //Buffer.from(b1,'hex')是把Uint8Array轉化成Buffer型別資料 let htmlStr = iconvLite.decode(Buffer.from(resultFetch.data.data, 'hex'), 'gbk'); console.log('htmlStr', htmlStr); // 顯示轉換後的結果 setTimeout(function () { htmlStr = '顯示轉換後的結果: ' + htmlStr prompt.showToast({ message: htmlStr }); }, 4000); }
如果未開啟 async支援,請參考https://doc.quickapp.cn/tutorial/framework/using-async.html?h=async