如何在Dart中使用GZip或类似方法压缩字符串?

时间:2016-09-27 22:11:29

标签: dart compression gzip

我想在Dart中压缩字符串(在浏览器中)。我试过这个:

import 'package:archive/archive.dart';

[...]

List<int> stringBytes = UTF8.encode(myString);
List<int> gzipBytes = new GZipEncoder().encode(stringBytes);
String compressedString = UTF8.decode(gzipBytes, allowMalformed: true);

显然UTF8.decode不适用于此,它不起作用(文件不可读)。

在Dart中压缩字符串的正确方法是什么?

3 个答案:

答案 0 :(得分:4)

压缩的字节列表可能不是有效的UTF8序列,而是可以在base64中对其进行编码。

import 'dart:convert';
import 'package:archive/archive.dart';

main() {
  String myString = 'myString';
  List<int> stringBytes = UTF8.encode(myString);
  List<int> gzipBytes = new GZipEncoder().encode(stringBytes);
  String compressedString = BASE64.encode(gzipBytes);

  print(compressedString);
}

答案 1 :(得分:0)

String data=' ';
for(int i=0;i<10;i++){
    data=data+'Hello World!\r\n';
}
var original=utf8.encode(data);
var compressed=gzip.encode(original);
var decompressed=gzip.decode(compressed);

答案 2 :(得分:0)

如果需要,您可以在下面使用此功能。

import 'dart:convert';
import 'dart:io';

  void _compress(String json) {
    final enCodedJson = utf8.encode(json);
    final gZipJson = gzip.encode(enCodedJson);
    final base64Json = base64.encode(gZipJson);

    final decodeBase64Json = base64.decode(base64Json);
    final decodegZipJson = gzip.decode(decodeBase64Json);
    final originalJson = utf8.decode(decodegZipJson);
    }