问题
I want to compress a string in Dart (in the browser). I tried this:
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);
Obviously UTF8.decode is not intended for this and it doesn't work (file is unreadable).
What is the right way to compress a string in Dart?
回答1:
The compressed list of bytes is probably not a valid UTF8 sequence instead you could encode it in base64.
import 'dart:convert';
import 'package:archive/archive.dart';
void main() {
  var myString = 'myString';
  var stringBytes = utf8.encode(myString);
  var gzipBytes = GZipEncoder().encode(stringBytes);
  var compressedString = base64.encode(gzipBytes);
  print(compressedString);
}
    来源:https://stackoverflow.com/questions/39735145/how-to-compress-a-string-using-gzip-or-similar-in-dart