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?
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);
}
You can use this function below if you want.
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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With