gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:51:19 27 4
gpt4 key购买 nike

我将数据存储在 localStorage 中。因为我存储了很多数据,所以我需要对其进行压缩。我用 GZip 做到这一点。一切正常,但我发现我从 GZip 到 Utf8 结果的 List 的转换非常慢。对于 500k 的数据,在快速计算机上最多可能需要 5 分钟。

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

加载:

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

var base64 = CryptoUtils.base64StringToBytes(window.localStorage[storageName]);
var decompress = new GZipDecoder().decodeBytes(base64);
storage = JSON.decode(new Utf8Decoder().convert(decompress));

保存:

var g = JSON.encode(storage);
List<int> bz2 = new GZipEncoder().encode(new Utf8Encoder().convert(g));
window.localStorage[storageName] = CryptoUtils.bytesToBase64(bz2);

难道我做错了什么?有没有其他方法可以在 Dart 中将列表转换为字符串?另外,我既保存又加载,所以不需要utf8。

我尝试了 Ascii,但它会为不受支持的字符引发错误。我得到了一种工作 latin1,它的性能要高得多,但我仍然得到一些不受支持的字符。

最佳答案

如果 UTF-8 真的是瓶颈,而你不需要它,你可以使用 Dart 的原生字符串编码,即 UTF-16。

var compressed = new GZipEncoder().encode(str.codeUnits);
var decompressed = new GZipDecoder().decodeBytes(compressed);
var finalStr = new String.fromCharCodes(decompressed);

关于utf-8 - 如何在 dart2js 之后将二进制数据转换为 utf8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28359949/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com