Utf 8 如何在dart2js之后将二进制数据转换为utf8字符串

Utf 8 如何在dart2js之后将二进制数据转换为utf8字符串,utf-8,binary,dart,Utf 8,Binary,Dart,我正在本地存储中存储数据。因为我存储了很多数据,所以我需要压缩它。我是用GZip做的。一切都正常,但我发现我从列表(GZip到Utf8的结果)的转换非常慢。对于500k的数据,在高速计算机上可能需要5分钟 问题主要出现在加载功能期间 加载: 导入'dart:convert'; 导入“package:archive/archive.dart”; 导入“包:crypto/crypto.dart”; var base64=CryptoUtils.base64StringToBytes(window.l

我正在本地存储中存储数据。因为我存储了很多数据,所以我需要压缩它。我是用GZip做的。一切都正常,但我发现我从列表(GZip到Utf8的结果)的转换非常慢。对于500k的数据,在高速计算机上可能需要5分钟

问题主要出现在加载功能期间

加载:

导入'dart:convert';
导入“package:archive/archive.dart”;
导入“包:crypto/crypto.dart”;
var base64=CryptoUtils.base64StringToBytes(window.localStorage[storageName]);
var decompress=new gzip解码器().decodeBytes(base64);
storage=JSON.decode(新的Utf8Decoder().convert(解压缩));
保存:

var g=JSON.encode(存储);
List bz2=new GZipEncoder().encode(new Utf8Encoder().convert(g));
window.localStorage[storageName]=CryptoUtils.bytesToBase64(bz2);
我做错什么了吗?在Dart中是否有其他方法将列表转换为字符串?此外,我同时保存和加载,因此不需要utf8


我尝试了Ascii,但它为不支持的字符抛出错误。我得到了一种工作拉丁语1,它的性能要高得多,但我仍然得到了一些不受支持的字符。

这只是一个黑客攻击,不是最好的,但它工作正常,现在给了我很好的性能:

String convertListIntToUtf8(列出代码单位){
var endIndex=codeUnits.length;
StringBuffer=新的StringBuffer();
int i=0;
而(ibuffer.write(new String.fromCharCode)((c如果UTF-8确实是瓶颈,并且您不需要它,那么您可以使用Dart的本机字符串编码,即UTF-16

var compressed=new GZipEncoder().encode(str.codeUnits);
var decompressed=new gzip解码器().decodeBytes(压缩);
var finalStr=新字符串.fromCharCodes(已解压缩);

您在浏览器上使用的是哪个GZipDecoder?我使用的是导入“package:archive/archive.dart”中的GZipDecoder;速度很快,问题出在Utf8Decoder上。我提交了文件。不过,我不确定我们什么时候会有时间研究它。(如果似乎什么都没有发生,请随时提醒我们错误).我们最近在一些常见情况下做出了决定。