c#

    /// <summary>
/// 字符串压缩解压
/// </summary>
public class Zipper
{
public static string CompressString(string str)
{
str = HttpUtility.UrlEncode(str);
var compressBeforeByte = Encoding.GetEncoding("UTF-8").GetBytes(str);
var compressAfterByte = Compress(compressBeforeByte);
string compressString = Convert.ToBase64String(compressAfterByte);
return compressString;
} public static string DecompressString(string str)
{
var compressBeforeByte = Convert.FromBase64String(str);
var compressAfterByte = Decompress(compressBeforeByte);
string compressString = Encoding.GetEncoding("UTF-8").GetString(compressAfterByte);
return HttpUtility.UrlDecode(compressString);
} /// <summary>
/// Compress
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private static byte[] Compress(byte[] data)
{
try
{
var ms = new MemoryStream();
var zip = new GZipStream(ms, CompressionMode.Compress, true);
zip.Write(data, , data.Length);
zip.Close();
var buffer = new byte[ms.Length];
ms.Position = ;
ms.Read(buffer, , buffer.Length);
ms.Close();
return buffer; }
catch (Exception e)
{
throw new Exception(e.Message);
}
} /// <summary>
/// Decompress
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private static byte[] Decompress(byte[] data)
{
try
{
var ms = new MemoryStream(data);
var zip = new GZipStream(ms, CompressionMode.Decompress, true);
var msreader = new MemoryStream();
var buffer = new byte[0x1000];
while (true)
{
var reader = zip.Read(buffer, , buffer.Length);
if (reader <= )
{
break;
}
msreader.Write(buffer, , reader);
}
zip.Close();
ms.Close();
msreader.Position = ;
buffer = msreader.ToArray();
msreader.Close();
return buffer;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}

js 基于pako.js

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>zip</title>
<script src="js/jquery.min.js"></script>
<script src="js/pako.min.js"></script>
<script type="text/javascript">
function encode() {
var str = $('#content').val();
str = window.btoa(pako.gzip(encodeURIComponent(str), { to: "string" }));
$('#ciphertext').text(str);
}
function decode() {
var encodedData = $('#content').val();
var decodedData = window.atob(encodedData); var charData = decodedData.split('').map(function (x) { return x.charCodeAt(0); });
var binData = new Uint8Array(charData);
var data = pako.inflate(binData);
decodedData = String.fromCharCode.apply(null, new Uint16Array(data)); $('#ciphertext').text(decodeURIComponent(decodedData));
}
</script>
</head>
<body>
<input id="content" type="text">
<button onclick="encode()">encode</button>
<button onclick="decode()">decode</button>
<div id="ciphertext"></div>
</body>
</html>

字符串GZIP压缩解压的更多相关文章

  1. java 字符串zlib压缩/解压

    今天在测公司的中间件时发现,增加netty自带的zlib codec压缩处理后,就报decompress failed, invalid head之类的异常.后来发现,直接用bytebuf处理报文体是 ...

  2. GZip 压缩解压 工具类 [ GZipUtil ]

    片段 1 片段 2 pom.xml <dependency> <groupId>commons-codec</groupId> <artifactId> ...

  3. linux命令:压缩解压命令

    压缩解压命令:gzip 命令名称:gzip 命令英文原意:GNU zip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip 选项  [文件] 功能描述:压缩文件 压缩后文件格式:g ...

  4. Delphi Base64编码/解码及ZLib压缩/解压

    最近在写的程序与SOAP相关,所以用到了一些Base64编码/解码及数据压缩/解压方面的知识. 在这里来作一些总结:   一.Base64编码/解码   一般用到的是Delphi自带的单元EncdDe ...

  5. VB6进行GZIP解压&C#进行GZIP压缩和解压

    VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...

  6. Linux命令-压缩解压命令:gzip、gunzip

    gzip [选项] 源文件名(压缩前) gunzip [选项] 源文件名(压缩后) cd /tmp 切换tmp目录 rm -rf * 强制删除tmp目录下面所有的文件和目录 touch beijing ...

  7. linux中tar及压缩解压命令用法

    把常用的tar解压命令总结下,当作备忘: tar 命令可以为Linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向 档案中加入新的文件.t ...

  8. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  9. tar 压缩解压命令详解

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

随机推荐

  1. linux系统Centos环境下搭建SVN服务器及权限配置

    linux系统Centos环境下如何搭建SVN服务器以及svnserve.conf.authz.passwd配置文件详细介绍   至于svn的概念,这里就不做详细阐述了,可以自行百度.简单来讲就是一个 ...

  2. 监控网卡流量脚本(Python)

    #!/usr/bin/env python# coding: utf-8# author: Xiao Guaishou try:    import psutilexcept ImportError: ...

  3. Oracle误删除数据恢复

    select * from tablename as of timestamp to_timestamp('2018-05-04 13:30:00','yyyy-MM-dd hh24:mi:ss') ...

  4. this和构造器的内存分析(***)

    this的含义: 1.区分成员变量和局部变量: 2.谁调用这个this就指向谁: public class Person{ private String name; private int age; ...

  5. Python笔记 #19# 实现bpnn

    代码编辑&解释工具:Jupyter Notebook 快速入门 形象说明BP神经网络的用法(图片来自推特): Bpnn类最主要的三个方法: initialize方法,用于设定神经网络的层数.各 ...

  6. Linux下php添加memcache扩展

    很多时候我们都会遇到在已经安装的php中添加其它的扩展. 那我们应该怎么做呢? 这样做.(我们的nginx和php都是已经安装好了的,这里就不做赘述了) 首先,我们需要下载php的memcache扩展 ...

  7. Oracle通过dblink连接MySQL

    需要把MySQL的一些数据同步到Oracle,用ETL工具太麻烦了,通过参考官方文档实现了oracle to mysql dblink.每次修改配置后,需要重启监听才能生效,或者 reload一下,确 ...

  8. P3690 【模板】Link Cut Tree (动态树)

    P3690 [模板]Link Cut Tree (动态树) 认父不认子的lct 注意:不 要 把 $fa[x]$和$nrt(x)$ 混 在 一 起 ! #include<cstdio> v ...

  9. 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)

    接前一篇CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南,继续对ELK. logstash官方最新文档https://www.elastic.co/g ...

  10. 12: nginx原理及常用配置

    1.1 nginx基本介绍 1.nginx高并发原理( 多进程+epoll实现高并发 ) 1. Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程. 2. 每个子进 ...