最近在做android開發,socket要傳報文資訊,報文資訊是有json格式,資料的重複度很高所以就找了一個壓縮字串的方法,資料越大壓縮越明顯。
資料轉送時,有時需要將資料壓縮和解壓縮,本例使用GZIPOutputStream/GZIPInputStream實現。
1、使用ISO-8859-1作為中介編碼,可以保證準確還原資料
2、字元編碼確定時,可以在uncompress方法最後一句中顯式指定編碼 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public class ZipUtil { // 壓縮 public static String compress(String str) throws IOException { if (str == null || str.length() == 0) { return str; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(out); gzip.write(str.getBytes()); gzip.close(); return out.toString("ISO-8859-1"); } // 解壓縮 public static String uncompress(String str) throws IOException { if (str == null || str.length() == 0) { return str; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(str