【问题标题】:TZipFile read UTF8TZipFile 读取 UTF8
【发布时间】:2016-08-17 18:24:15
【问题描述】:

我正在尝试从 zip 文件中提取 (UTF-8) 文本文件:

TZipFile *zFile = new TZipFile;
zFile->Open(L"C:\\test.zip", zmRead);

TByteDynArray bda;
zFile->Read(L"test.txt", bda);
zFile->Close();

ShowMessage(WideStringOf(bda));

这不起作用。我得到一个字符串,但内容很奇怪。

如果我使用zFile->Extract(),它可以正常工作,但我不想使用磁盘(性能)。

有没有办法对 UTF-8 文件使用读取功能?

【问题讨论】:

    标签: c++ utf-8 c++builder zipfile


    【解决方案1】:

    问题不在于TZipFile 本身,真正的问题实际上在于WideStringOf()

    TZipFile::Read() 返回指定存档文件的 raw 字节(如果需要解压缩),因此您的 bda 变量是一个 UTF-8 编码的字节数组。但是,WideStringOf() 需要一个被编码为 UTF-16LE 的字节数组。这就是您看到不正确结果的原因。

    要将字节数组解码为 UTF-8,请改用:

    ShowMessage(TEncoding::UTF8->GetString(bda));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 2010-10-28
      • 2016-10-12
      相关资源
      最近更新 更多