import 'package:flutter/material.dart';
import 'dart:html' as html;
import 'package:archive/archive_io.dart' as webarc;
void writeEssay() {
String contentString = "Essay on Rupee: ₹";
webarc.ArchiveFile file = webarc.ArchiveFile.stream(
"Rupee Essay.txt",
contentString.length,
webarc.InputStream(contentString.codeUnits),
);
// Add file in archive
final webarc.Archive archive = webarc.Archive();
archive.addFile(file);
final webarc.OutputStream outputStream = webarc.OutputStream(
byteOrder: webarc.LITTLE_ENDIAN,
);
// Encode file into Zip file
final webarc.ZipEncoder encoder = webarc.ZipEncoder();
final List<int>? bytes = encoder.encode(archive,
level: webarc.Deflate.BEST_COMPRESSION, output: outputStream);
// Download the Zip file.
final html.Blob blob = html.Blob([bytes]);
final String url = html.Url.createObjectUrlFromBlob(blob);
final html.AnchorElement anchor =
html.document.createElement('a') as html.AnchorElement
..href = url
..style.display = 'none'
..download = "Essay.zip";
html.document.body!.children.add(anchor);
// download
anchor.click();
}
我创建. txt文件,并在其中我写卢比符号.
但当我使用Archive package(https://pub.dev/packages/archive)将此txt文件添加到ZIP文件中并在flutter web中下载ZIP文件时,卢比符号更改为¹。
如果我从flutter web下载. txt,它工作正常。当在zip中添加此. txt文件并下载zip文件时出现问题。
存档工作完美,但它只改变了我的txt文件内容to ¹
如何解决这个问题,并保持,因为它是,在ZIP文件?
我也尝试写卢比符号与Flutter统一码,但问题是相同的。
flutterdart-zipdart-archivezip-encodingzip-encoder
1条答案
按热度按时间ajsxfq5m1#
不要直接使用字符串内容添加到zip文件中。
首先将内容字符串编码为UTF-8,然后将编码后的List添加到zip中。