站点工具


服务器技术:java:gzip服务器和js客户端

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

服务器技术:java:gzip服务器和js客户端 [2020/03/03 15:53]
admin 创建
服务器技术:java:gzip服务器和js客户端 [2020/03/03 16:17] (当前版本)
admin
行 1: 行 1:
 +<​p><​br/>​import java.io.ByteArrayInputStream;</​p><​br/><​p><​br/>​import java.io.ByteArrayOutputStream;<​br/>​import java.io.IOException;<​br/>​import java.util.zip.GZIPInputStream;<​br/>​import java.util.zip.GZIPOutputStream;<​br/><​br/>​public class GZIPUtils&​nbsp;​ {<​br/>&​nbsp;&​nbsp;&​nbsp;​ public static final String GZIP_ENCODE_UTF_8 = &​quot;​UTF-8&​quot;;<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static byte[] compress(String str, String encoding) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ if (str == null || str.length() == 0) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return null;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ ByteArrayOutputStream out = new ByteArrayOutputStream();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ GZIPOutputStream gzip;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ try {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ gzip = new GZIPOutputStream(out);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ gzip.write(str.getBytes(encoding));<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ gzip.close();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ } catch ( Exception e) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ e.printStackTrace();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return out.toByteArray();<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static byte[] compress(String str) throws IOException {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ ///str = URLEncoder.encode(str,​ GZIP_ENCODE_UTF_8);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return compress(str,​ GZIP_ENCODE_UTF_8);<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static byte[] uncompress(byte[] bytes) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ if (bytes == null || bytes.length == 0) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return null;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ ByteArrayOutputStream out = new ByteArrayOutputStream();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ ByteArrayInputStream in = new ByteArrayInputStream(bytes);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ try {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ GZIPInputStream ungzip = new GZIPInputStream(in);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ byte[] buffer = new byte[256];<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ int n;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ while ((n = ungzip.read(buffer)) &gt;= 0) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ out.write(buffer,​ 0, n);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ } catch (Exception e) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ e.printStackTrace();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return out.toByteArray();<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static String uncompressToString(byte[] bytes, String encoding) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ if (bytes == null || bytes.length == 0) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return null;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ ByteArrayOutputStream out = new ByteArrayOutputStream();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ ByteArrayInputStream in = new ByteArrayInputStream(bytes);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ try {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ GZIPInputStream ungzip = new GZIPInputStream(in);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ byte[] buffer = new byte[256];<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ int n;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ while ((n = ungzip.read(buffer)) &gt;= 0) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ out.write(buffer,​ 0, n);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return out.toString(encoding);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ } catch (Exception e) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ e.printStackTrace();<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ }<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return null;<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static String uncompressToString(byte[] bytes) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return uncompressToString(bytes,​ GZIP_ENCODE_UTF_8);<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static String toString(byte[] bytes) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return org.apache.commons.codec.binary.Base64.encodeBase64String(bytes);<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static byte[] decodeToString(String bytes) {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ return org.apache.commons.codec.binary.Base64.decodeBase64(bytes);<​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ public static void main(String[] args) throws IOException {<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ /*String s = &​quot;​{\&​quot;​navigate\&​quot;:​\&​quot;​POSLOGIN\&​quot;,​\&​quot;​userInfo\&​quot;:​{\&​quot;​sysDate\&​quot;:​1575540038000,​\&​quot;​userFlag\&​quot;:​\&​quot;​Y\&​quot;,​\&​quot;​orderType\&​quot;:​\&​quot;​\&​quot;,​\&​quot;​lastURL\&​quot;:​\&​quot;​\&​quot;,​\&​quot;​shopName\&​quot;:​\&​quot;​安麗體驗廣場\&​quot;,​\&​quot;​saleDate\&​quot;:​1575475200000,​\&​quot;​locale\&​quot;:​\&​quot;​zh_TW\&​quot;,​\&​quot;​orderChannel\&​quot;:​\&​quot;​POS\&​quot;,​\&​quot;​lastDateForMonth\&​quot;:​1577807999000,​\&​quot;​regionCode\&​quot;:​\&​quot;​130\&​quot;,​\&​quot;​staffName\&​quot;:​\&​quot;​邱信展2\&​quot;,​\&​quot;​logonPosFlag\&​quot;:​\&​quot;​Y\&​quot;,​\&​quot;​startTime\&​quot;:​1575540038000,​\&​quot;​integerFirstDateForMonth\&​quot;:​20191201,​\&​quot;​posSequence\&​quot;:​0,​\&​quot;​saleDateInt\&​quot;:​20191205,​\&​quot;​shopCode\&​quot;:​\&​quot;​01\&​quot;,​\&​quot;​firstDateForMonth\&​quot;:​1575129600000,​\&​quot;​cardHiddenFlag\&​quot;:​\&​quot;​N\&​quot;,​\&​quot;​preference\&​quot;:​{\&​quot;​dateFormatInput\&​quot;:​\&​quot;​yyyyMMdd\&​quot;,​\&​quot;​currencyFormatD3\&​quot;:​\&​quot;#,##​0.000\&​quot;,​\&​quot;​currencyFormatD2\&​quot;:​\&​quot;#,##​0.00\&​quot;,​\&​quot;​dateFormat\&​quot;:​\&​quot;​yyyy-MM-dd\&​quot;,​\&​quot;​currencyFormatD0\&​quot;:​\&​quot;#,##​0\&​quot;,​\&​quot;​timeFormat\&​quot;:​\&​quot;​HH:​mm:​ss\&​quot;,​\&​quot;​dateAndTimeFormat\&​quot;:​\&​quot;​MM-dd HH:​mm\&​quot;​},​\&​quot;​idHiddenFlag\&​quot;:​\&​quot;​N\&​quot;,​\&​quot;​sysDateInt\&​quot;:​20191205,​\&​quot;​privilegeInited\&​quot;:​false,​\&​quot;​staffNumber\&​quot;:​\&​quot;​QIU02\&​quot;,​\&​quot;​orderDivFlowList\&​quot;:​[],​\&​quot;​posCode\&​quot;:​\&​quot;​T003\&​quot;,​\&​quot;​inValidPrivHotKeyStrSet\&​quot;:​[\&​quot;​A01\&​quot;​],​\&​quot;​intSaleDateTW\&​quot;:​1191205,​\&​quot;​currencyCode\&​quot;:​\&​quot;​NTD\&​quot;,​\&​quot;​integerLastDateForMonth\&​quot;:​20191231}}&​quot;;<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​字符串长度:&​quot;​+s.length());<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​字符长度byte:&​quot;​+&​nbsp;&​nbsp;​ s.getBytes(&​quot;​UTF-8&​quot;​).length);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ String cstr = GZIPUtils.toString( compress(s));<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ cstr = new String( compress(s));<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​byse64压缩后String::&​quot;​+ cstr );<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​byse64压缩后ByteLength::&​quot;​+ cstr.getBytes(&​quot;​UTF-8&​quot;​).length);<​br/><​br/><​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​压缩后byte::&​quot;​+compress(s).length);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​解压后byte:&​quot;​+uncompress(compress(s)).length);<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​解压字符串后::&​quot;​+uncompressToString(compress(s)));<​br/>&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;&​nbsp;​ System.out.println(&​quot;​解压字符串后::&​quot;​+toString(compress(s)));<​br/>​*/<​br/><​br/>&​nbsp;&​nbsp;&​nbsp;​ <​br/>&​nbsp;&​nbsp;&​nbsp;​ }<​br/><​br/>​}<​br/></​p><​p><​br/></​p><​p><​br/></​p><​p><​br/></​p><​p><​br/></​p><​p>​=====================================================================</​p><​p><​br/></​p><​p style="​line-height:​ 16px;"><​img src="​https://​wiki.gddlh.com/​ueditor/​dialogs/​attachment/​fileTypeImages/​icon_txt.gif"/><​a style="​font-size:​12px;​ color:#​0066cc;"​ href="​https://​wiki.gddlh.com/​ueditor/​php/​upload/​file/​20200303/​1583223414771695.html"​ title="​pako.html">​pako.html</​a></​p><​p style="​line-height:​ 16px;"><​img src="​https://​wiki.gddlh.com/​ueditor/​dialogs/​attachment/​fileTypeImages/​icon_txt.gif"/><​a style="​font-size:​12px;​ color:#​0066cc;"​ href="​https://​wiki.gddlh.com/​ueditor/​php/​upload/​file/​20200303/​1583223414929887.js"​ title="​pako.js">​pako.js</​a></​p><​p>&​lt;​!DOCTYPE html&​gt;<​br/>&​lt;​html&​gt;<​br/>&​lt;​head&​gt;<​br/>&​nbsp;​ &​lt;​meta charset=&​quot;​UTF-8&​quot;&​gt;<​br/>&​nbsp;​ &​lt;​title&​gt;​pako.js实现gzip的压缩和解压&​lt;/​title&​gt;<​br/>&​lt;/​head&​gt;<​br/>&​lt;​body&​gt;<​br/>&​lt;​script type=&​quot;​text/​javascript&​quot;​ src=&​quot;​pako.js&​quot;&​gt;&​lt;/​script&​gt;<​br/>&​lt;​script &​gt;<​br/>​var b64Data&​nbsp;&​nbsp;​ = &#​39;​H4sIAAAAAAAAAG1ST4/​SQBT/​Kma4smZaFll62yxBGimLtqsxZmNGZgqTtDN1ZsCwhIs375q9ajwZE5NNPOnBLyMHvoVv2imQRQ4kze/​fm/​d7KyTIgk+JYShA48t4ePk4HKEmmmumQpFKFKyQXupeSfDanXb7FOPWGca44vQzMgXlS5BIRZlKloV1gs+MaHP1bFh96JksRiS30ObHh+2v2+33j9tvt5vfXzeff1qcZGyfcdpp+xiXGZmcAASym9nr5EWdcjEjQrCsGtllWXlfqkgKMyttOme40+12SxvFplyKC0mtldfCNtKQNHUzbd/​f/​f3zZXP3ybdmcirFWOqDpwFXmYTnxzvgwrAprIGr+xP42Ot68NdEhdQxeztnYgJ6vH9sKMyO1q525CbEHoSmx5423PO7j9xyJkTRAaeUCTerba5QLGWqClshWulzYkJRzCEPLeEXRZQCdTJXlrisCL0WoI1mo4Efgvsx7B/​AgO6dnelJFJ38zxbXOoAM7HAnGgyCPA+0dmbngiaHcGn3oCShNWz6+KnuMO/​tsVB8wTNoJRTcMIqClGSa1YXP8zdMgf5peIX9+p56fNHP5Lsh1+D06rqszFWRQNXI9vycZJyOwXsgzRO2jI2KmWWjc2jruryE2BULhxp49Tj1NpzfKOmh3dkMj+62ekbLW6//​AT9C+HuaAwAA&#​39;;<​br/>​var ticketData = &#​39;​{&​quot;​ed&​quot;:&​quot;​20170121 09:​44:​01&​quot;,&​quot;​fs&​quot;:​[{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​003&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​005&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​004&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​007&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​008&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​026&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​033&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​034&​quot;,&​quot;​oids&​quot;:​[&​quot;​0&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​035&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​037&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​038&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​041&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​042&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​047&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​046&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​048&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​051&​quot;,&​quot;​oids&​quot;:​[&​quot;​1&​quot;​]},​{&​quot;​usg&​quot;:​[1,​1,​1,​1,​1,​1,​1],&​quot;​act&​quot;:​0,&​quot;​fid&​quot;:&​quot;​053&​quot;,&​quot;​oids&​quot;:​[&​quot;​4&​quot;​]}],&​quot;​qty&​quot;:​1,&​quot;​sd&​quot;:&​quot;​20161021 09:​44:​01&​quot;,&​quot;​cd&​quot;:&​quot;​72016102116762039687&​quot;​}&#​39;;<​br/><​br/>​var han = &​quot;​就是qwqw上来就发上来快点减肥蓝色的就疯了似的&​quot;;<​br/>//​ Output to console<​br/>​var ehan = zip(han);<​br/>​var s =&nbsp; unzip(b64Data) ;<​br/>​console.log(&​quot;​unzipped:&​quot;​);<​br/>​console.log(s);<​br/>​console.log(&​quot;​中午&​quot;​);<​br/>​document.write(han+&​quot;&​lt;​br/&​gt;&​quot;​);<​br/>​document.write(s);<​br/>​var data = zip(ticketData);<​br/>​console.log(&​quot;​zipped:&​quot;​);<​br/>​console.log(data);<​br/>​function unzip(b64Data){<​br/>&​nbsp;​ var strData&​nbsp;&​nbsp;​ = atob(b64Data);<​br/>&​nbsp;​ // Convert binary string to character-number array<​br/>&​nbsp;​ var charData&​nbsp;​ = strData.split(&#​39;&#​39;​).map(function(x){return x.charCodeAt(0);​});<​br/>&​nbsp;​ // Turn number array into byte-array<​br/>&​nbsp;​ var binData&​nbsp;&​nbsp;​ = new Uint8Array(charData);<​br/>&​nbsp;​ // // unzip<​br/>&​nbsp;​ var data&​nbsp;&​nbsp;&​nbsp;​ = pako.inflate(binData);<​br/>&​nbsp;​ // Convert gunzipped byteArray back to ascii string:<​br/>&​nbsp;​ //​strData&​nbsp;&​nbsp;​ = String.fromCharCode.apply(null,​ new Uint16Array(data));<​br/>&​nbsp;​ // Convert gunzipped byteArray back to utf8 string:<​br/>&​nbsp;​ strData = byteToUtf8String(data);<​br/>&​nbsp;​ return strData;<​br/>​}<​br/>​function zip(str){<​br/>&​nbsp;​ var binaryString = pako.gzip(str,​ { to: &#​39;​string&#​39;​ });<​br/>&​nbsp;​ return btoa(binaryString);<​br/>​}<​br/><​br/><​br/>​function byteToUtf8String(arr) {<​br/>&​nbsp;&​nbsp;​ &​nbsp;​if(typeof arr === &#​39;​string&#​39;​) {<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​return arr;<​br/>&​nbsp;&​nbsp;​ &​nbsp;​}<​br/>&​nbsp;&​nbsp;​ &​nbsp;​var str = &#​39;&#​39;,<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​_arr = arr;<​br/>&​nbsp;&​nbsp;​ &​nbsp;​for(var i = 0; i &lt; _arr.length;​ i++) {<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​var one = _arr[i].toString(2),<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &nbsp;v = one.match(/​^1+?​(?​=0)/​);<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​if(v &​amp;&​amp;​ one.length == 8) {<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​var bytesLength = v[0].length;<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​var store = _arr[i].toString(2).slice(7 - bytesLength);<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​for(var st = 1; st &lt; bytesLength;​ st++) {<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​store += _arr[st + i].toString(2).slice(2);<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​}<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​str += String.fromCharCode(parseInt(store,​ 2));<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &nbsp;i += bytesLength - 1;<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &nbsp;} else {<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​str += String.fromCharCode(_arr[i]);<​br/>&​nbsp;&​nbsp;​ &​nbsp;&​nbsp;&​nbsp;​ &​nbsp;​}<​br/>&​nbsp;&​nbsp;​ &​nbsp;​}<​br/>&​nbsp;&​nbsp;​ &​nbsp;​return str;<​br/>​}<​br/>&​lt;/​script&​gt;<​br/><​br/>​=========<​br/>&​lt;/​body&​gt;<​br/>&​lt;/​html&​gt;<​br/><​br/></​p>​
服务器技术/java/gzip服务器和js客户端.txt · 最后更改: 2020/03/03 16:17 由 admin