1. 程式人生 > 實用技巧 >QuickApp 快應用中 或 nodejs 中 API接品呼叫時 GBK轉UTF8

QuickApp 快應用中 或 nodejs 中 API接品呼叫時 GBK轉UTF8

請求介面地址: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