- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 Minizip 压缩具有非 ASCII 文件名的文件.如果压缩文件名有问题的文件,即至少有一个不在 ASCII 中的字符的名称被压缩,则存档中文件的名称会被弄乱。我红How to convert minizip wrapper to unicode?并更改了源代码,以便将标志 11 设置为 true,但并没有什么不同。
举例说明问题:
文件 中文
在 zip 存档中名为 S+í¦vt
。
或十六进制:
\x53\x2B\xA1\xB5\xFB\xE7
到 \x53\x2b\xed\xa6\x76\x74
前两个十六进制相同但后四个不同。 \x53\x2b\xed\xa6\x76\x74
在 window 1252
S+í¦vt
程序中的文件名被硬编码为\x53\x2B\xA1\xB5\xFB\xE7
(中文),以消除输入错误的风险。
文件名中仅包含 ASCII 字符的文件在 zip 存档中按应有的方式命名。由于压缩包中的文件名比原始文件名长,我假设使用了另一种编码,然后使用 UTF-8。
由于计算机中的所有符号实际上都只是二进制字符串,所以我希望一个十六进制字符串能够输出正确的文件名。这里的问题是我不知道文件名是如何在 zip 存档中编码的。
有没有人知道如何将 hex/UTF-8 转换为正确的格式以及使用哪种编码?
我认为 zip 存档使用操作系统标准编码,在我的例子中是 Windows-1252。
const char kChineseSampleText[] = "\x53\x2B\xA1\xB5\xFB\xE7";
if ( open_file( zipF, kChineseSampleText ) )
{
//write to file
}
bool open_file( const zipFile zipFile, const char* fileName)
{
zip_fileinfo zfi;
int status = zipOpenNewFileInZip( zipFile, fileName , NULL, &zfi, NULL, 0, NULL, 0, Z_DEFLATED, Z_DEFAULT_COMPRESSION );
if( status != ZIP_OK )
{
zipClose( zipFile, NULL );
return false;
}
true;
}
最佳答案
Window 的标准压缩程序无法处理 Unicode,因此它读取二进制字符串作为 window-1252。 7-zip 解释 Unicode 中的二进制字符串!
事实证明我的程序一直有效。我唯一做的就是将标志 11 设置为 true。我没有修改任何其他内容,比如使用 wchar_t 指针而不是 char*。
关于c - 用于文件名的 Minizip 和 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31460244/
我正在使用 MiniZip 解压缩 iPhone 项目中的文件。一切正常,但我在这条线上的 MiniZip 代码中发现仪器泄漏: 解压.c第493行 s=(unz_s*)ALLOC(sizeof(un
我有一个 vector (它只是一个字符数组的包装器)作为输入。 pkzip 是使用 c# sharpZipLib 创建的。 我将数据存储到一个文件中,该文件通过已 check out 的十六进制编辑
我正在尝试使用 miniunzip 来提取一些文件。它适用于 Linux。在 Windows 上,它不会抛出任何错误,但如果文件是可执行的,则生成的二进制文件将不起作用。我收到一个消息窗口,其中包含有
我正在搜索如何使用 minizip 从内存缓冲区打开存档。 我从他们的页面 http://www.winimage.com/zLibDll/minizip.html 找到了 ioapi_mem_c.z
对于一个项目来说,必须读取一些 zip 文件。一切都很好,但是什么时候想从 zip 文件中的文件夹中读取这是行不通的。或者我只是不知道 zip 在 C++ 中是如何工作的。我在互联网上搜索过,找不到答
我正在使用 Zlib 的 Minizip 程序。我正在尝试将文件添加到当前的 zip 文件中。我发现我可以使用以下函数 append zip 文件: extern zipFile ZEXPORT zi
zlib之间有什么关系?和迷你压缩?当我下载 zlib 时,我看到 minizip visual studio 项目是 windows 环境中 zlibvc 解决方案的一部分。 不确定这两个库是不同的
我有以下 cmake 文件要下载、构建和安装 zlib: cmake_minimum_required ( VERSION 2.8.7 ) include (ExternalProject) if(U
我正在尝试使用 Minizip 压缩具有非 ASCII 文件名的文件.如果压缩文件名有问题的文件,即至少有一个不在 ASCII 中的字符的名称被压缩,则存档中文件的名称会被弄乱。我红How to co
我正在尝试使用来自 [http://www.zlib.net/] 的 minzip 包装器来压缩文件夹。只要文件名是英文,它就可以正常工作。有没有人试过修改 minizip 以支持 unicode?
Firefox 将其默认配置信息存储在omni.jar(旧版本)或omni.ja(更高版本)中。 omni.jar 和omni.ja 都是zip 文件格式。因此我们可以使用许多程序/库来压缩或解压
我正在制作一个应用程序,它使用 this following github link 中的 SSZipArchive 将文件压缩/解压缩到文档目录中.然后我将以下内容添加到我的 Xcode 项目中,
我编写代码用 minizip 删除 zip 文件。 引用http://www.winimage.com/zLibDll/del.cpp 我必须经常删除和修改文件和 zip。 使用的 zip 文件是 1
是否有关于如何将包含文件夹和文件的 zip 文件解压缩到某个目录并通过 MiniZip 将它们打包回来的 C/C++ 教程? 最佳答案 没有教程可以准确说明这一点。然而,MiniZip 源代码中包含两
有什么方法可以通过 minizip 正确提取符号链接(symbolic link)吗? OS X 上的库? 通过提取文件时 status = mz_zip_reader_extract_to_fil
我正在尝试为跨平台应用程序归档文件,看起来 Minizip(基于 zlib)与归档程序一样便携。 但是,当我尝试运行以下虚拟代码时,出现系统错误 [my executable] has stopped
我需要将#import "ZBarSDK.h"写入#ifdef OBJ 部分,因为如果在其他地方导入,Minizip 将无法工作! #ifdef __OBJC__ #import #import
我正在尝试制作一个跨平台的 Appx打包程序(用于 Windows 商店应用程序)。该格式只是一个带有一些元数据文件的 zip。 我需要制作一个包含文件哈希值的 XML 文件,因为格式需要它。问题是它
我和fopen with unicode filename的情况一样,我想在其中使用使用 fopen 的库。有问题的库是 minizip,我需要它在 Windows、UNIX (OSX)、iOS 和
我正在尝试使用 Visual Studio 2010 在 Windows 7 64 位上使用 static minizip 库。 主要目标是归档大于 4GB 的文件。 我使用 CMake 2.8 构建
我是一名优秀的程序员,十分优秀!