日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码

發布時間:2023/12/31 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1, 下載 pako.js => http://nodeca.github.io/pako/#Deflate.prototype.onData

2, 首先需要了解一下?XMLHttpRequest 2.0 =>?https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

3, 已 GET 請求為例, 紅色注釋部分為關鍵步驟

<!DOCTYPE html> <html> <head><meta charset="UTF-8"><title>網絡請求獲取 GZIP 格式的數據流, 并解析</title><script src="../commom/pako.min.js"></script> </head> <body><div id="box" style="font-size: 30px"></div> </body> <script type="text/javascript">var Ajax = (function () {var Utf8ArrayToStr = function(array) { // 數據流轉化為字符串, 兼容漢字var out = "", i = 0, len = array.length, char1, char2, char3, char4;while(i < len) {char1 = array[i++];// 當單個字節時, 最大值 '01111111', 最小值 '00000000' 右移四位 07, 00// 當兩個字節時, 最大值 '11011111', 最小值 '11000000' 右移四位 13, 12// 當三個字節時, 最大值 '11101111', 最小值 '11100000' 右移四位 14, 14if (char1 >> 4 <= 7) {out += String.fromCharCode(char1);} else if (char1 >> 4 == 12 || char1 >> 4 == 13) {char2 = array[i++];out += String.fromCharCode(((char1 & 0x1F) << 6) | (char2 & 0x3F));} else if (char1 >> 4 == 14) {char2 = array[i++];char3 = array[i++];char4 = ((char1 & 0x0F) << 12) | ((char2 & 0x3F) << 6);out += String.fromCharCode(char4 | ((char3 & 0x3F) << 0));}}return out;};return function (url, json, fn) { // 返回一個網絡請求方法var ajax = new XMLHttpRequest(); // 實例化一個 網絡請求url += "?";for(key in json) {url += key + "=" + json[key] + "&";}url = url.substr(0, url.length - 1);ajax.open("get", url, true); // 開啟一個網絡請求ajax.responseType = "arraybuffer"; // 聲明返回的是二進制數據流ajax.onload = function () {if(ajax.response) {var byteArray = new Uint8Array(ajax.response); // 切換數據編碼為byteArray = pako.ungzip(byteArray); // 調用 pako 的方法解壓數據 fn(Utf8ArrayToStr(byteArray));} else {fn("沒有獲取到任何數據");}};ajax.send(null); // 發起請求 }})();Ajax("../files/gzip.gz", {}, function (ret) {console.log(ret + "1")});Ajax("../files/gzips.gz", {}, function (ret) {console.log(ret + "2")}); </script> </html>

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。