2016-10-13 162 views
0

我在C#中使用下面的代碼壓縮字符串。C#中的字符串壓縮和JavaScript中的解壓縮

public static string Compress(string text) 
{ 
    byte[] buffer = Encoding.UTF8.GetBytes(text); 
    MemoryStream ms = new MemoryStream(); 
    using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true)) 
    { 
     zip.Write(buffer, 0, buffer.Length); 
    } 

    ms.Position = 0; 
    MemoryStream outStream = new MemoryStream(); 

    byte[] compressed = new byte[ms.Length]; 
    ms.Read(compressed, 0, compressed.Length); 

    byte[] gzBuffer = new byte[compressed.Length + 4]; 
    System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length); 
    System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4); 
    return Convert.ToBase64String(gzBuffer); 
} 

但是相同的字符串我想在Javascript中解壓縮。

任何人都可以幫助我如何解壓縮字符串在Javascript中?

非常感謝

回答

0

通常,當你在談論的HTTP上下文C#和JavaScript的。對於HTTP,您將壓縮保留到傳輸層,這意味着服務器按照客戶端和服務器功能的HTTP協商進行壓縮。壓縮通過靜態文件或動態數據完成,例如Web服務/ Web API。有關在IIS中設置壓縮的說明,請參閱this page

有幾個原因會導致您無法自行實施,包括代碼複雜性,維護成本,實施時間和增加的錯誤風險。

如果您在C#和JavaScript之間實現壓縮有一些特殊需要,那麼最簡單的方法就是使用行業標準。你選擇的gzip是好的。支持gzip的流行JavaScript庫是pako