国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flutter 解壓 zip 中文亂碼問(wèn)題處理

這篇具有很好參考價(jià)值的文章主要介紹了flutter 解壓 zip 中文亂碼問(wèn)題處理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

很簡(jiǎn)單的一個(gè) zip 包解壓縮的功能,但是 windows 平臺(tái)中文顯示亂碼,很糟心,搜了一圈沒(méi)找到現(xiàn)成的方法,在此貼上我的解決方式。

實(shí)現(xiàn)

導(dǎo)入需要的包

flutter pub add archive

flutter pub add fast_gbk

flutter pub add path

代碼如下:

import 'dart:io';
import 'package:fast_gbk/fast_gbk.dart';
import 'package:archive/archive.dart';
import 'package:path/path.dart' as p;

void main() {
  unzip('G:/testUpdate/111.zip', 'G:/testUpdate/1');
}

void unzip(String inputPath, String outputPath) {
  var archive = zipDecode(inputPath);

  for (final file in archive) {
    final filename = file.name;
    final filePath = p.join(outputPath, filename);

    if (!file.isFile && !file.isSymbolicLink) {
      Directory(filePath).createSync(recursive: true);
      continue;
    }

    if (file.isSymbolicLink) {
      final link = Link(filePath);
      link.createSync(p.normalize(file.nameOfLinkedFile), recursive: true);
    } else {
      final data = file.content as List<int>;
      final newFile = File(filePath);
      newFile.createSync(recursive: true);
      newFile.writeAsBytesSync(data);
    }
  }
}

// 由于 archive 包直接用會(huì)亂碼,這里加一下對(duì)于 gbk 編碼的處理
Archive zipDecode(String inputPath) {
  final zipFile = File(inputPath);
  final bytes = zipFile.readAsBytesSync();
  final inputStream = InputStream(bytes);
  // final inputStream = InputFileStream('G:/testUpdate/111.zip');
  var directory = ZipDirectory.read(inputStream);

  final archive = Archive();

  for (final zfh in directory.fileHeaders) {
    final zf = zfh.file!;

    // The attributes are stored in base 8
    final mode = zfh.externalFileAttributes!;
    final compress = zf.compressionMethod != ZipFile.STORE;

    //dynamic content = zf.rawContent;
    var file = ArchiveFile(
        zf.filename, zf.uncompressedSize!, zf, zf.compressionMethod);

    file.mode = mode >> 16;

    // see https://github.com/brendan-duncan/archive/issues/21
    // UNIX systems has a creator version of 3 decimal at 1 byte offset
    if (zfh.versionMadeBy >> 8 == 3) {
      file.isFile = false;

      final fileType = file.mode & 0xF000;
      switch (fileType) {
        case 0x8000:
        case 0x0000: // No determination can be made so we assume it's a file.
          file.isFile = true;
          break;
        case 0xA000:
          file.isSymbolicLink = true;
          break;
        default:
      }
    } else {
      file.isFile = !file.name.endsWith('/');
    }

    file.crc32 = zf.crc32;
    file.compress = compress;
    file.lastModTime = zf.lastModFileDate << 16 | zf.lastModFileTime;

    final needGbkDecode = zf.flags & 2048 == 0;
    if (needGbkDecode) {
      file.name = gbk.decode(zf.filename.codeUnits);
    }

    archive.addFile(file);
  }

  return archive;
}

昨天剛接觸的 flutter,若是代碼有問(wèn)題還望指出,非常感謝!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-648244.html

到了這里,關(guān)于flutter 解壓 zip 中文亂碼問(wèn)題處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Hive中處理中文亂碼問(wèn)題的解決方法

    中文亂碼是在處理大數(shù)據(jù)時(shí)經(jīng)常遇到的問(wèn)題之一,尤其是在使用Hive進(jìn)行數(shù)據(jù)分析和查詢時(shí)。本文將介紹一些解決Hive中文亂碼問(wèn)題的方法,并提供相應(yīng)的源代碼示例。 設(shè)置Hive的字符集編碼 在Hive中,可以通過(guò)設(shè)置字符集編碼來(lái)解決中文亂碼問(wèn)題。通過(guò)在Hive會(huì)話中設(shè)置\\\"client.

    2024年02月04日
    瀏覽(22)
  • 中文亂碼處理

    中文亂碼處理

    ??前言 中文亂碼處理 ??個(gè)人主頁(yè):塵覺(jué)主頁(yè) ??個(gè)人簡(jiǎn)介:大家好,我是塵覺(jué),希望我的文章可以幫助到大家,您的滿意是我的動(dòng)力???? 在csdn獲獎(jiǎng)榮譽(yù): ??csdn城市之星2名 ???? ???? ???? ???? ???? ???? ???? ???? ??Java全棧群星計(jì)劃

    2024年02月11日
    瀏覽(17)
  • Java【代碼 16】將word、excel文件轉(zhuǎn)換為pdf格式和將pdf文檔轉(zhuǎn)換為image格式工具類分享(Gitee源碼)aspose轉(zhuǎn)換中文亂碼問(wèn)題處理

    感謝小伙伴兒的分享: ● 不羈 ● 郭中天 整合調(diào)整后的工具類Gitee地址:https://gitee.com/yuanzhengme/java_application_aspose_demo ● WordToPdfUtil用于將word文檔轉(zhuǎn)換為pdf格式的工具類 ● ExcelToPdfUtil用于將excel文檔轉(zhuǎn)換為pdf格式的工具類 ● PdfToImageUtil用于將pdf文檔轉(zhuǎn)換為image格式的工具類

    2024年01月24日
    瀏覽(34)
  • 9:中文亂碼處理-Java Web

    常見(jiàn)字符集包括: ASCII(American Standard Code for Information Interchange) :美國(guó)標(biāo)準(zhǔn)信息交換代碼,主要用于英語(yǔ)字符的編碼,包含128個(gè)字符。 ISO-8859系列 :國(guó)際標(biāo)準(zhǔn)化組織制定的一系列單字節(jié)編碼方案,如ISO-8859-1(Latin-1),支持西歐語(yǔ)言字符;ISO-8859-6用于阿拉伯語(yǔ)等。 GB2312/

    2024年02月06日
    瀏覽(18)
  • 串口打印中文亂碼及注釋亂碼問(wèn)題

    串口打印中文亂碼及注釋亂碼問(wèn)題

    在使用keil5中出現(xiàn)如下問(wèn)題: 這時(shí)候的解決方法是在keil5頂頭工具欄上進(jìn)入:Edit→Configuration,如下然后進(jìn)行選擇GB2312編碼方式: 在檢查串口波特率等設(shè)置雙方均一樣之后,還是出現(xiàn)中文亂碼問(wèn)題的解決方法如下: 方法一: ? 在進(jìn)行上面的操作后,注釋處中文亂碼問(wèn)題解決

    2024年02月07日
    瀏覽(28)
  • springMVC--中文亂碼處理(新思路--化繁為簡(jiǎn))

    springMVC--中文亂碼處理(新思路--化繁為簡(jiǎn))

    前端頁(yè)面在提交中,可能會(huì)出現(xiàn)中文。為了防止前端傳入的中文數(shù)據(jù)出現(xiàn)亂碼問(wèn)題,我們需要使用Spring提供的編碼過(guò)濾器來(lái)統(tǒng)一編碼。 要使用編碼過(guò)濾器,需要在web.xml中進(jìn)行過(guò)濾器配置。 我們也可以選擇自己進(jìn)行配置過(guò)濾器。 當(dāng)表單提交數(shù)據(jù)為中文時(shí),會(huì)出現(xiàn)亂碼,為了更

    2024年02月15日
    瀏覽(18)
  • jsp中出現(xiàn)了中文亂碼情況處理方案

    jsp中出現(xiàn)了中文亂碼情況處理方案

    問(wèn)題:jsp中出現(xiàn)了中文亂碼情況如何處理。 此類錯(cuò)誤是在idea的jsp文件中,完全用HTML的語(yǔ)法來(lái)編寫代碼,故而沒(méi)有考慮到 其平臺(tái)與我所指定的頁(yè)面編碼不一 的問(wèn)題,致使中文亂碼,如下: 其本質(zhì)原因?yàn)閖ava的源文件與class字節(jié)碼文件基于Unicode之上,而jsp與java的保存方式都基

    2024年02月04日
    瀏覽(12)
  • Ubuntu中文字幕亂碼亞洲影視的亂碼問(wèn)題

    Ubuntu中文字幕亂碼亞洲影視的亂碼問(wèn)題

    Ubuntu看電影總是加載中文字幕的時(shí)候出現(xiàn)亂碼,后來(lái)發(fā)現(xiàn)是亞洲影視字符編碼的問(wèn)題,今天休假在家就寫了一個(gè)小的中文字幕亂碼字符轉(zhuǎn)碼的程序,目前來(lái)說(shuō)滿足我自己的需求了,代碼如下: import sys,io if len(sys.argv) != 2: print \\\"Please input file path!\\\" else: f1 = io.open(sys.argv[1], \\\"r\\\", e

    2024年02月11日
    瀏覽(19)
  • SpringMVC中文亂碼(request或response)前后端處理

    前端處理: 后端處理: GET請(qǐng)求(request)亂碼處理: POST請(qǐng)求(request)亂碼處理: 響應(yīng)(response)亂碼處理:

    2024年02月10日
    瀏覽(11)
  • VScode注釋中文時(shí)亂碼怎么辦?VScode中文注釋亂碼問(wèn)題的解決方法

    VScode注釋中文時(shí)亂碼怎么辦?VScode中文注釋亂碼問(wèn)題的解決方法

    不管是在哪一種編輯器上,都會(huì)有自動(dòng)默認(rèn)的一種編碼格式,在vscode編輯器中默認(rèn)的編碼格式是utf-8,但是在注釋的時(shí)候,因?yàn)槭褂玫淖址麜?huì)不一樣,所以可能存在著默認(rèn)的配置文件,有可能是其他的編碼格式,所以因?yàn)榫幋a格式不對(duì)應(yīng),導(dǎo)致了在注釋的時(shí)候出現(xiàn)了亂碼的情

    2024年02月11日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包